2010-10-14 20 views
7

Caliburn veya Caliburn Micro framework örneğinin, DataGrid öğeleriyle yönlendirme eylemlerini gösteren iyi kod örneklerini bilen var mı?Silverlight, Caliburn, Actions ve DataGrids

+0

Gitmelisiniz topluluğun geri kalanı için geri bildirim sağlamak için cevabı işaretleyin. – RyBolt

+0

Sadece yaptım. Teşekkürler. – BuddyJoe

cevap

11

Bu örnek, veri kılavuzundaki her satıra bir eylem ekler. Eylem, tüm görünümün datacontext olan viewmodel üzerinde ele alınır. Bu Micro'da kuruldu, ancak sözdizimi aynı. Bu, sözleşmeye dayalı veri bağlama kullanmaz.

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

ve ilgili ViewModel şuna benzer:

bakış ilgili kısmıdır özel parametre $ DataContext burada tartışılan

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

: http://caliburn.codeplex.com/wikipage?title=Parameters&referringTitle=Documentation