CommandTarget属性:
当一个command被executed的时候,指定这个事件的sender是谁。
例如如下xaml:
<StackPanel Name="FirstStackPanel"
Background="AliceBlue"
Focusable="True">
<!-- <SnippetCustom_RoutedCommandCommandBinding> -->
<StackPanel.CommandBindings>
<CommandBinding Command="{x:Static custom:Window1.ColorCmd}"
Executed="ColorCmdExecuted"
CanExecute="ColorCmdCanExecute"/>
</StackPanel.CommandBindings>
<!-- <SnippetCustom_RoutedCommandCommandBinding> -->
<Label>First StackPanel</Label>
<!-- <SnippetCustom_RoutedCommandCommandSource> -->
<Button Name="myButton" Command="{x:Static custom:Window1.ColorCmd}"
CommandParameter="ButtonOne"
CommandTarget="{Binding ElementName=FirstStackPanel}"
Content="CommandTarget = FristStackPanel" />
<!-- </SnippetCustom_RoutedCommandCommandSource> -->
</StackPanel>
对应后台的ColorCmdExecuted方法如下:
private void ColorCmdExecuted(object sender, ExecutedRoutedEventArgs e)
{
Panel target = e.Source as Panel;
if (target != null)
{
if (target.Background == Brushes.AliceBlue)
{
target.Background = Brushes.LemonChiffon;
}
else
{
target.Background = Brushes.AliceBlue;
}
}
}
则这里sender指的是CommandTarget所指的值,即FirstStackPanel,如果在xaml中不指定CommandTarget的话,这里的sender的值就会是触发这个commnad的myButton。