我有一个用户表,并且有一个来自Book表的这个表的外键。FK是ProxyResponsibleUser_ID。当我在我的DataGrid中使用DataGridTextColumn时,一切正常,但是现在我想使用DataGridTemplateColumn来显示User表中的ProxyResponsibleUser_ID列。我得到一个错误,因为DataGridTemplateColumn没有绑定属性。
那么,我将通过DataGridTemplateColumn的哪个属性绑定ProxyResponsibleUser_ID呢?提前谢谢。
<DataGridTextColumn x:Name="securityConfigurationNameColumn" Binding="{Binding Path=SecurityConfigurationName}" Header="Security Configuration Name" Width="*" />
<DataGridTemplateColumn x:Name="proxyResponsibleUser_IDColumn" Binding="{Binding Path=ProxyResponsibleUser_ID}" Header="Proxy Responsible User ID" Width="*" >
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate DataType="{x:Type domain:User}">
<TextBlock Text="{Binding FullName}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>发布于 2012-07-31 06:06:52
我已经在这个问题上挣扎了很长一段时间,经过多次无果的搜索,我想出了一个可以接受的替代品。
对于正在搜索此内容的其他任何人:尝试创建DataGridBoundColumn的自定义实现。您只需要覆盖两个方法: GenerateElement和GenerateEditingElement。
示例:
protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
{
Label element = new Label();
element.SetBinding(Label.ContentProperty, Binding);
return element;
}用法:
<DataGrid>
<DataGrid.Columns>
<DataGridCustomColumn Binding="{Binding SomeProperty}" />
<DataGridCustomColumn Binding="{Binding OtherProperty}" />
</DataGrid.Columns>
</DataGrid>虽然我最初打算使用模板,但我选择了在代码隐藏中创建元素,因为我的需求相当简单;然而,我看不出有什么理由不能在适当的DependencyProperty注册的情况下使用DataTemplates。
发布于 2010-09-01 19:08:17
我不知道您到底想要做什么,但是绑定必须在TextBlock中完成,就像您已经做的那样。因此,DataGridTemplateColumn-Tag中的绑定是不必要的。列不需要知道记录的id。
如果你想让这个id对TextBox控件可用(通常不需要,因为你可以直接通过DataContext访问这个属性),你可以通过绑定标签属性来实现。
<TextBlock Text="{Binding FullName}" Tag="{Binding ProxyResponsibleUser_ID}"/> 顺便说一下,您在EditTemplate中声明了一个TextBlock。也许你想要一台TextBox。或者,是否允许用户更改Id?如果是这种情况,请发表评论。
希望这能有所帮助。
https://stackoverflow.com/questions/3617237
复制相似问题