.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");
        }
    }