如何在棱镜中使用委托命令发布按钮点击事件
how to publish button click event using delegate command in prism
我有一个按钮 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);
}
}
}
首先,Grid class 没有 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");
}
}
我希望这个小示例可以帮助您了解绑定和命令。
我有一个按钮 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);
}
}
}
首先,Grid class 没有 ItemsSource 属性,因此您无法轻松绑定 Items。我使用 DataGrid
而不是 GridMainWindow.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");
}
}
我希望这个小示例可以帮助您了解绑定和命令。