English 中文(简体)
Silverlight, Caliburn, Actions and DataGrids
原标题:

Anyone know of good code examples of the Caliburn or Caliburn Micro framework example that illustrate routing Actions with DataGrid items?

最佳回答

This example attaches an action to each row in the datagrid. The action is handled on the viewmodel that is the datacontext for the entire view. This was built in Micro, but the syntax is the same. This does not use the convention-based data binding.

The relevant portion of the view is:

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

and the corresponding viewmodel looks like this:

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

The special parameter $dataContext is discussed here: http://caliburn.codeplex.com/wikipage?title=Parameters&referringTitle=Documentation

问题回答

暂无回答




相关问题
Silverlight Rich text box control

Our team decided that we need our own custom Rich text box control for Silverlight app we are developing. We looked at existing controls mentioned at A good rich text control for Silverlight but ...

Silverlight ImageBrush not rendering (with Bing Map Control)

I m trying to add an image to a Pushpin instance from the Silverlight Bing Map Control, but I can t seem to get it to render (the pushpin renders fine). This is probably a general WPF question rather ...

Silverlight OpenFileDialog DoEvents equivalent

I m processing large files after they are selected by the user. My code looks like the following: if (FileDialog.ShowDialog() == true) { // process really big file } This freezes up the UI so ...

list of controls with templates in silverlight

Does anyone know where to find a list of controls that you can set the template on in Silverlight? I ve wasted several hours now trying to create control templates only to find that the control doesn ...

Silverlight, Updating the UI during processing

I have a simple silverlight multifile upload application, and i want to provide the user with some feedback, right now its only in a test phase and i dont have the webservice. Somehow i cant get the ...

Silverlight 3 - FindName returns null

This looks a bug to me.. Using Silverlight 3 and i have a user control defined in XAML and trying to access the object during runtime returns a null. <Grid> <common:CommonGridEditPanel x:...

silverlight 3 collection binding

Someone please help me understand why this binding does not work... I have a class called SelectionManager with a property called dates which is populated by a WCF service. The property is an ...

热门标签