如何在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
或者什么的,我不知道怎么弄…
感谢:)
DataGrid
中DataTemplate
内部的绑定无法正常工作。您需要使用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语法,如这里所示