【文件属性】:
文件名称:WPF共享控件
文件大小:329KB
文件格式:ZIP
更新时间:2019-02-22 04:43:55
WPF Style MVVM Command Trigger
原创:
本示例以一个共享控件为例,对样式资源加以说明,方便对样式有个更深层次的了解,主要有以下特点:
1.使用简单MVVM模式,使用命令代替UI事件。
2.使用到各种样式。
3.将控件共享化。
4.使用命令触发器。
public MainWindow()
{
InitializeComponent();
Action>, string> bindData =
(xamDataGrid, selectedRowsCommand, rowsPropertyName) =>
{
BindingOperations.SetBinding(xamDataGrid, DataGrid.ItemsSourceProperty,
new Binding
{
Source = ViewModel,
Path = new PropertyPath(rowsPropertyName),
Mode = BindingMode.OneWay
});
// TODO : 全选命令未绑定到vm
var contextMenu = (MenuItem)xamDataGrid.ContextMenu.Items[0];
contextMenu.Command = ApplicationCommands.SelectAll;
contextMenu.Header = "全选";
var commandTrigger = (EventCommandTrigger)CommandSource.GetTriggers(xamDataGrid);
BindingOperations.SetBinding(commandTrigger, EventCommandTrigger.CommandParameterProperty,
new Binding
{
Source = xamDataGrid.SelectedItems,
});
commandTrigger.Command = selectedRowsCommand;
commandTrigger.RoutedEvent = DataGrid.SelectionChangedEvent;
commandTrigger.UpdateCommandParameter = true;
};
const string SHARED_DATAGRID = "xgShared";
var viewModel = (MainViewModel)ViewModel;
var xdgSystem = (DataGrid)Resources[SHARED_DATAGRID];
bindData(xdgSystem,
viewModel.SelectedSystemRowsCommand,
"SystemRows");
placeSystem.Content = xdgSystem;
var xdgImport = (DataGrid)Resources[SHARED_DATAGRID];
bindData(xdgImport,
viewModel.SelectedImportRowsCommand,
"ImportRows");
placeImport.Content = xdgImport;
}
【文件预览】:
SharedStyle
----SharedStyle.sln(875B)
----SharedStyle.suo(83KB)
----ReadMe.txt(194B)
----SharedStyle()
--------Triggers()
--------bin()
--------obj()
--------Resources()
--------MainViewModel.cs(6KB)
--------MainWindow.xaml(6KB)
--------Properties()
--------DataRow.cs(589B)
--------MainWindow.xaml.cs(3KB)
--------App.xaml(599B)
--------App.xaml.cs(186B)
--------SharedStyle.csproj(6KB)
--------Base()