如何在silverlight中获得视图模型中数据网格内按钮的引用

本文关键字:数据网 网格 按钮 引用 数据 视图 silverlight 模型 | 更新日期: 2023-09-27 18:22:40

我在xaml中声明了一个数据网格,如下所示:

<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中,我必须将按钮链接到一个命令,我可以使用这个获得对数据网格的引用

_dlgProducts.ProductsForProjectDataGrid

其中_dlgproducts是对象,现在我如何获得删除按钮的引用,一旦我得到引用,我就可以将命令绑定到它,我需要像一样的东西

_dlgProducts.ProductsForProjectDataGrid.DeleteProductButton

或者什么的,我不知道怎么弄…

感谢:)

如何在silverlight中获得视图模型中数据网格内按钮的引用

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

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

不知道你的问题是什么。你想在视图模型中为Button设置命令(顺便说一下,这破坏了你的mvvm…),但你已经将delete命令绑定到XAML中的按钮上了。如果我理解正确的话,你的绑定不起作用,你想在代码背后进行绑定。如果是这样的话,请看看这个问题和答案。还有两件事:

  • 当它工作时,CommandParameter绑定应该与此CommandParameter="{Binding}"类似
  • 您最好将您的删除映像添加到应用程序资源中,并使用Source属性的pack/component语法,如这里所示