2010-04-01 7 views
1

ViewModel/Datacontext에 문자열 속성이 있으며 그 내용을 클립 보드에 복사하는 간단한 단추가 필요합니다. XAML에서이 작업을 수행 할 수 있습니까? 아니면이 작업을 수행하기 위해 단추 클릭 이벤트 (또는 ICommand 사용)를 처리해야합니까? 나는 다음과 같은 작업 것이라고 생각하지만, 내 버튼이 항상 회색으로 표시됩니다 :클립 보드에 속성 복사

<Button Width="100" Content="Copy" Command="ApplicationCommands.Copy" 
CommandTarget="{Binding MyStringProperty}"/> 

답변

2

ApplicationCommands 그들이 RoutedUICommands에 따라 FocusScope 줄 것이다 도구 모음 또는 메뉴에있는 것으로 기대하고있다. 당신의 버튼을 도구 모음 또는 메뉴를 벗어나면, 당신은 명시 적으로 초점 범위를 선언 할 필요가 다음 CommandTarget은 복사 버튼 만 때마다 활성화됩니다 것을 의미 FocusScope를 제공하는 요소를 선언하는 데 사용됩니다

<Button 
    Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" 
    Command="ApplicationCommands.Copy" 
    FocusManager.IsFocusScope="True"/> 

CommandTarget에 선언 된 요소가 포커스를 가지고 있으며, 사본의 경우, 텍스트를 강조 있습니다

가 특정 질문에 대한 대답에서
<Button 
    Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" 
    Command="ApplicationCommands.Copy" 
    CommandTarget="{Binding ElementName=MyElement}" /> 

, 당신이 얻을 수있는 ApplicationCommands.Copy 명령을 차단해야 할 것입니다 설정/ViewModel의 MyStringProperty; 그리고 솔직히 말해서, 나는 그 중 하나를 이해하기 시작해야할지 모르겠다. 어쩌면 여기서 더 똑똑한 사람이 퍼즐 조각을 제공 할 수 있습니다.

+0

설명해 주셔서 감사합니다. 여러분이 말하는 것을 바탕으로, 버튼을 묶는 ICommand를 사용하여 코드를 통해 처리하는 것이 더 쉽습니다. –

+0

그렇게 생각하지 마십시오. Xaml에서는 훨씬 더 깨끗합니다. –

관련 문제