如何在silverlight的viewmodel中获取datagrid中按钮的引用?

时间:2012-02-05 11:25:36

标签: c# silverlight silverlight-4.0 mvvm prism

我在xaml中声明了一个datagrid,如下所示:

<sdk:DataGrid x:Name="ProductsForProjectDataGrid" AutoGenerateColumns="True" ItemsSource="{Binding Path=Products.ProductsForProject}">
                  <sdk:DataGrid.Columns>
            <sdk:DataGridTemplateColumn x:Name="DeleteTemplate" Width="10*">
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>

                        <Button x:Name="DeleteProductButton" Command="{Binding DeleteProductCommand}" CommandParameter="Products.SelectedProduct" >

                            <Button.Content>

                                <Image x:Name="DeleteProductImage" Visibility="Visible" Height="20" Source="C:\Documents and Settings\DELETE.GIF" Width="20"/>
                            </Button.Content> 
                        </Button>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
            </sdk:DataGridTemplateColumn>
            <sdk:DataGridTextColumn Binding="{Binding Product}" Header="Product Name" IsReadOnly="True" Width="40*"/>                          

        </sdk:DataGrid.Columns>

    </sdk:DataGrid>

并且在viewModel中我将按钮链接到命令,我可以使用它来获取对datagrid的引用,

_dlgProducts.ProductsForProjectDataGrid

其中_dlgproducts是对象, 现在我怎样才能获得对删除按钮的引用, 一旦我得到参考,我可以绑定命令, 我需要像

这样的东西
_dlgProducts.ProductsForProjectDataGrid.DeleteProductButton

或其他什么,我不知道如何得到它......

谢谢:)

2 个答案:

答案 0 :(得分:1)

Silverlight中DataTemplateDataGrid内的绑定无法正常工作。您需要使用DataContextProxy。请参见此处的示例:

http://weblogs.asp.net/dwahlin/archive/2009/08/20/creating-a-silverlight-datacontext-proxy-to-simplify-data-binding-in-nested-controls.aspx

答案 1 :(得分:0)

不知道你的问题是什么。您想在视图模型中设置Button的命令(顺便打破您的mvvm ...)但是您将删除命令绑定到XAML中的按钮。如果我理解正确你的绑定不起作用,你想在后面的代码中做。如果是这样,请查看this问题和答案。还有两件事:

  • 当你开始工作时,CommandParameter绑定看起来应与CommandParameter="{Binding}"
  • 相似
  • 您最好将删除图片添加到应用资源,并使用Source属性的包/组件语法,例如here