.net 如何在prism中使用委托命令发布按钮单击事件
我在一个.net 如何在prism中使用委托命令发布按钮单击事件,.net,wpf,prism,.net,Wpf,Prism,我在一个xaml中有一个按钮,在另一个xaml中有一个grid我想在单击按钮时填充网格中的值。如何使用Prism执行此操作 public class buttonloadviewmodel: NotificationObject { public DelegateCommand<object> combochange { get; set; } private readonly IEventAggregator eve
xaml
中有一个按钮,在另一个xaml
中有一个grid
我想在单击按钮时填充网格中的值。如何使用Prism
执行此操作
public class buttonloadviewmodel: NotificationObject
{
public DelegateCommand<object> combochange { get; set; }
private readonly IEventAggregator eventaggs;
public buttonloadviewmodel(IEventAggregator eventaggs)
{
this.eventaggs = eventaggs;
InititializeDelegateCommand();
}
private void InititializeDelegateCommand()
{
combochange = new DelegateCommand<object>(onselection, canexecute);
}
private bool canexecute(object arg)
{
return true;
}
private void onselection(object obj)
{
eventaggs.GetEvent<buttonclickaevent>().Publish(Button.ClickEvent);
}
List<string> usenamse = new List<string>();
public List<string> useNamse
{
get { return usenamse; }
set
{
usenamse = value;
RaisePropertyChanged(() => this.useNamse);
}
}
}
公共类按钮NLOAdviewModel:NotificationObject
{
公共DelegateCommand combochange{get;set;}
私有只读IEventAggregator事件;
公共按钮通知模型(IEVENTAGREGATOR eventaggs)
{
this.eventaggs=eventaggs;
initializedelegateCommand();
}
private void initializedelegateCommand()
{
combochange=新的DelegateCommand(onselection,canexecute);
}
私有布尔canexecute(对象参数)
{
返回true;
}
私人选择(对象obj)
{
eventaggs.GetEvent().Publish(按钮.ClickEvent);
}
List usenamse=新列表();
公共列表使用名称
{
获取{return usenamse;}
设置
{
usenamse=值;
RaisePropertyChanged(()=>this.useNamse);
}
}
}
首先,网格类没有ItemsSource属性,因此无法轻松绑定项。我使用DataGrid代替网格
MainWindow.xaml
添加数据
ViewModel.cs
公共类视图模型
{
public DelegateCommand AddCommand{get;private set;}
公共ObservableCollection项{get;set;}=new ObservableCollection();
公共视图模型()
{
AddCommand=新的DelegateCommand(AddMethod);
}
私有void AddMethod()
{
添加(“你好”);
}
}
我希望这个小示例可以帮助您使用绑定和命令。将命令绑定到按钮,将集合绑定到网格,并从命令的执行委托中填充集合……谢谢,先生,但我是wpf的新手。您能举个例子吗?您已经得到了什么?在问题中加入一些不起作用的代码,否则可能会很快被否决,因为stackoverflow并不是一种代码编写服务……先生,我发布了代码。首先,我使用了组合框,可以在其中触发事件。但我不知道在单击按钮时如何执行相同操作。您可以通过在按钮定义中添加
command=“{Binding combochange}”
将按钮的单击绑定到combochange命令
<Window.DataContext>
<local:ViewModel></local:ViewModel>
</Window.DataContext>
<Grid>
<StackPanel>
<Button Command="{Binding AddCommand}">Add data</Button>
<DataGrid ItemsSource="{Binding Items}">
</DataGrid>
</StackPanel>
</Grid>
</Window>
public class ViewModel
{
public DelegateCommand AddCommand { get; private set; }
public ObservableCollection<String> Items{get; set; } = new ObservableCollection<string>();
public ViewModel()
{
AddCommand = new DelegateCommand(AddMethod);
}
private void AddMethod()
{
Items.Add("Hello");
}
}