Wer kennt gute Codebeispiele des Caliburn- oder Caliburn Micro-Framework-Beispiels, die Routing-Aktionen mit DataGrid-Elementen veranschaulichen?Silverlight, Caliburn, Actions und DataGrids
7
A
Antwort
11
In diesem Beispiel wird eine Aktion an jede Zeile im Datagrid angehängt. Die Aktion wird auf dem Ansichtsmodell behandelt, das der Datenkontext für die gesamte Ansicht ist. Dies wurde in Micro eingebaut, aber die Syntax ist die gleiche. Dies verwendet nicht die Konventionsbasierte Datenbindung.
Der relevante Teil der Ansicht ist:
<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>
und die entsprechende Ansichtsmodell sieht wie folgt aus:
public class ShellViewModel : IShell
{
public ShellViewModel()
{
Source = new ObservableCollection<MyRow>(
new[]
{
new MyRow {Text = "A1", More = "B", Stuff = "C"},
new MyRow {Text = "A2", More = "B", Stuff = "C"},
new MyRow {Text = "A3", More = "B", Stuff = "C"},
new MyRow {Text = "A4", More = "B", Stuff = "C"},
new MyRow {Text = "A5", More = "B", Stuff = "C"},
}
);
}
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; }
}
Der spezielle Parameter $ Datacontext hier diskutiert wird: http://caliburn.codeplex.com/wikipage?title=Parameters&referringTitle=Documentation
Sie sollten Markiere die Antwort, um Feedback für den Rest der Community zu geben. – RyBolt
Habe gerade getan. Vielen Dank. – BuddyJoe