2010-04-01 126 views
1

我在我的ViewModel/Datacontext中有一個字符串屬性,並希望有一個簡單的按鈕將其內容複製到剪貼板。這是可能從XAML做到的,或者我需要處理按鈕單擊事件(或使用ICommand)來完成此操作?我想下面的工作,但我的按鈕總是灰色的:將屬性複製到剪貼板

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

回答

2

的ApplicationCommands期待是在工具欄或菜單,這將給他們FocusScope基於RoutedUICommands。如果您的按鈕工具欄或菜單之外,那麼你需要顯式聲明的重點範圍:

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

的CommandTarget用於聲明哪個元素將提供FocusScope這意味着複製按鈕纔會啓用時在CommandTarget聲明的元素具有焦點,並在複印件的情況下,具有高亮顯示文本:

<Button 
    Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}" 
    Command="ApplicationCommands.Copy" 
    CommandTarget="{Binding ElementName=MyElement}" /> 

在回答您的具體問題,你需要攔截ApplicationCommands.Copy命令獲取/設置你的ViewModel的MyStringProperty;說實話,我不知道該從哪裏開始弄清楚這一點。也許在這裏更聰明的人可以提供這個難題。

+0

感謝您的解釋。根據你所說的話,通過代碼處理它可能更容易,並且該按鈕綁定到一個ICommand。 – 2010-04-02 13:28:17

+0

不要這樣想。 Xaml更清潔。 – 2013-05-24 03:58:13