我需要调用命令的多个实例
对于这个例子,我将采取2个控件'A'和'B'
'A'是Invoker,'B'是invokie,有多个'B'实例
控件:
public class A : Control
{
public A()
{}
public ICommand OnACommand
{
get { return (ICommand)GetValue(OnAProperty); }
set { SetValue(OnACommandProperty, value); }
}
public static readonly DependencyProperty OnACommandProperty =
DependencyProperty.Register("OnACommand", typeof(ICommand), typeof(A), new UIPropertyMetadata(null));
public bool Something
{
get { return (bool)GetValue(SomethingProperty); }
set { SetValue(SomethingProperty, value); }
}
public static readonly DependencyProperty SomethingProperty=
DependencyProperty.Register("Something", typeof(bool), typeof(A), new UIPropertyMetadata(false,OnSometingPropertyChanged));
private static void OnSometingPropertyChanged(...)
{
...
OnACommand.Execute(this.Value);
}
}
public class B : Control
{
public B(){ }
public ICommand OnBCommand
{
get { return (ICommand)GetValue(OnBCommandProperty); }
set { SetValue(OnBCommandProperty, value); }
}
public static readonly DependencyProperty OnBCommandProperty =
DependencyProperty.Register("OnBCommand", typeof(ICommand), typeof(B), new UIPropertyMetadata(null));
}
绑定:
<local:B x:Name="B1" OnBCommand="{Binding ElementName=A1 , Path=OnACommand />
<local:B x:Name="B2" OnBCommand="{Binding ElementName=A1 , Path=OnACommand />
<local:A x:Name="A1" />
我需要的是所有B命令绑定到执行OnACommand时执行的命令。
我认为唯一可行的方法是,如果我在B 中实现了命令而将它绑定到OneWayTosource ,而不仅仅是最后一个绑定到A将是将被执行的B。
public B()
{
OnBCommand = new RelayCommand<int>
(
value => { this.Value = value ....}
);
}
<local:B x:Name="B1"
OnBCommand="{Binding ElementName=A1,Path=OnACommand,Mode=OneWayToSource />
<local:B x:Name="B2"
OnBCommand="{Binding ElementName=A1,Path=OnACommand,Mode=OneWayToSource />
<local:A x:Name="A1" />
如果我以任何其他方式绑定它,比如OneWay我需要在A中执行命令而B不知道 它甚至被执行了,除非有可能某些人承认来自B内代表的执行......
总而言之,我需要从一个来源执行多个目标。
另外我可能会指出我使用我在'A1'中声明的常规.net事件解决了这个问题 并订阅了所有的B,但由于这是用MVVM编写的WPF,我正在寻找使用命令的MVVM样式方式。
提前谢谢。