【问题标题】:how to publish button click event using delegate command in prism如何使用prism中的委托命令发布按钮单击事件
【发布时间】:2016-03-24 11:09:45
【问题描述】:

我在一个xaml 和另一个grid 中有一个按钮xaml 我想在单击按钮时在网格中填充值。如何使用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);
                }
            }
        }

【问题讨论】:

  • 将命令绑定到按钮,将集合绑定到网格,并从命令的执行委托中填充集合...
  • 谢谢先生,但我是 wpf 的新手,你能举个例子吗?
  • 你已经得到了什么?将一些不起作用的代码放在问题中,或者它可能会很快被否决,因为 stackoverflow 并不是一个代码编写服务......
  • 先生,我发布代码。首先我使用了组合框,我可以在其中触发一个事件。但是当我单击按钮时我不知道该怎么做。
  • 通过将Command="{Binding combochange}" 放入按钮的定义中,将按钮的单击绑定到combochange-command

标签: .net wpf prism


【解决方案1】:

首先,Grid 类 没有 ItemsSource 属性,因此您无法轻松绑定 Items。我使用 DataGrid 而不是 Grid

MainWindow.xaml

 <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>

ViewModel.cs

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

我希望这个小例子可以帮助你了解绑定和命令。

【讨论】:

    猜你喜欢
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2018-05-22
    • 1970-01-01
    相关资源
    最近更新 更多