任何人都知道Caliburn或Caliburn Micro框架示例的良好代码示例,用于说明使用DataGrid项目的路由操作?
解决方法
此示例将操作附加到datagrid中的每一行.该操作在viewmodel上处理,viewmodel是整个视图的datacontext.这是用Micro构建的,但语法是一样的.这不使用基于约定的数据绑定.
该观点的相关部分是:
<sdk:DataGrid ItemsSource="{Binding Source}" AutoGenerateColumns="False"> <sdk:DataGrid.Columns> <sdk:DataGridTemplateColumn Header="Action"> <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Content="Do!" cm:Message.Attach="Remove($dataContext)" /> </DataTemplate> </sdk:DataGridTemplateColumn.CellTemplate> </sdk:DataGridTemplateColumn> <sdk:DataGridTextColumn Binding="{Binding Text}" /> <sdk:DataGridTextColumn Binding="{Binding More}" /> <sdk:DataGridTextColumn Binding="{Binding Stuff}" /> </sdk:DataGrid.Columns> </sdk:DataGrid>
相应的viewmodel看起来像这样:
public class Shellviewmodel : IShell { public Shellviewmodel() { Source = new ObservableCollection<MyRow>( new[] { new MyRow {Text = "A1",More = "B",Stuff = "C"},new MyRow {Text = "A2",new MyRow {Text = "A3",new MyRow {Text = "A4",new MyRow {Text = "A5",} ); } public void Remove(MyRow row) { Source.Remove(row); } public ObservableCollection<MyRow> Source { get; set; } } public class MyRow { public string Text { get; set; } public string More { get; set; } public string Stuff { get; set; } }
这里讨论特殊参数$dataContext:
http://caliburn.codeplex.com/wikipage?title=Parameters&referringTitle=Documentation