我已經建立了一個UserControl,其中包含一些包含TextBlock控件的邊框。 TextBlocks的Text屬性被設置爲來自我的ViewModel對象的數據。命令和菜單
我已經添加了幾個上下文菜單中的用戶控件的資源:
<UserControl.Resources>
<ContextMenu x:Key="ContextMenu">
<MenuItem Header="Copy Plate" Command="cs:CarSystemCommands.CopyPlateCommand" />
<MenuItem Header="Search Plate" Command="cs:CarSystemCommands.SearchPlateCommand" />
</ContextMenu>
<ContextMenu x:Key="TextBoxContextMenu">
<MenuItem Header="_Copy" Command="Copy" />
<MenuItem Header="Copy Plate" Command="cs:CarSystemCommands.CopyPlateCommand" />
<MenuItem Header="Search Plate" Command="cs:CarSystemCommands.SearchPlateCommand" />
</ContextMenu>
</UserControl.Resources>
我已經添加到右鍵菜單引用我的TextBlocks。這裏有一個例子:
<Border Background="#FFFFFF78"
BorderBrush="Black"
BorderThickness="2"
ContextMenu="{StaticResource TextBoxContextMenu}"
Grid.Column="0"
Margin="5,10,5,5">
<TextBlock FontSize="18"
FontWeight="Bold"
HorizontalAlignment="Center"
Margin="5"
x:Name="Camera"
VerticalAlignment="Center" />
</Border>
最後,我已經添加CommbandBindings到該用戶控件:
<UserControl.CommandBindings>
<CommandBinding Command="Copy" CanExecute="CopyCommand_CanExecute" Executed="CopyCommand_Executed" />
<CommandBinding Command="cs:CarSystemCommands.CopyPlateCommand" CanExecute="CopyCommand_CanExecute" Executed="CopyPlateCommand_Executed" />
</UserControl.CommandBindings>
我有兩個問題,而這一切對日期:
當我的權利點擊控件,我看到菜單,但選擇變灰。我在CopyCommand_CanExecute,CopyCommand_Executed和CopyPlateCommand_Executed方法的開始處放置了斷點。這些斷點僅在一次運行中被擊中。我不知道他們爲什麼在那個時候受到打擊,但不是在此之前或之後。我如何確保每次都調用CanExecute方法?
有一次斷點確實被擊中,參數的Source屬性不是我認爲是的控件,而是UserControl。我需要知道UserControl上的哪個TextBlocks引發了該事件。我怎麼做?
託尼
編輯:
的用戶控件還包含一個ComboBox控件。我發現CanExecute方法在我下拉組合框後右鍵單擊TextBlock時運行。我不必在組合框中選擇任何東西,我只需點擊它即可。
任何想法的ComboBox可能會做我的代碼不是?
另一件事是,在下拉ComboBox後,Execute事件參數的OriginalSource是ComboBox。我想在幾個TextBlocks上使用相同的Copy命令,並且我需要知道使用哪個上下文菜單,以便知道將哪個TextBlock的文本複製到剪貼板。幫幫我!