ルーティングコマンドの仕組みを理解しようとしていますが、問題があります。 UserControlsをItemテンプレートとしたButtonとItemControlを持つメインウィンドウを作成しました。メインウィンドウでユーザーコントロールを使用してRoutedCommandを使用する
<Window>
<Grid>
<ItemsControl
ItemsSource="{Binding CollectionOfUsers}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<uc:UserUserControl
Name="{Binding PersonName}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<Button
Command="{x:Static helpers:RoutedCommands.SendChangesCommand}"
Content="SAVE"/>
</Grid>
</Window>
メインウィンドウのボタンをクリックすると、ItemsControl内のすべてのUserControlからいくつかのメソッドを実行します。
私は静的クラスでRoutedCommandのを作成しました:
public static class RoutedCommands
{
public static readonly RoutedCommand SendChangesCommand = new RoutedCommand();
}
そしてRoutedCommandのにユーザーコントロールを結合しました。コードビハインドの方法に
<UserControl.CommandBindings>
<CommandBinding Command="{x:Static helpers:RoutedCommands.SendChangesCommand}"
Executed="CommandBinding_Executed"/>
:
private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
{
// Do something
}
は、私はボタンをクリックすると、それは、すべてのユーザーコントロールオブジェクトのメソッドを起動しますと思ったが、悲しいことに、このコードは動作しません - ボタンが無効になります。私は何が欠けていますか?