我有一个具有自定义样式的数据网格,因此我可以在整个应用程序中重用此格式。它有一个自定义列标题,行样式等。我能够使文本包装在列标题上工作,数据正确绑定到它。当我尝试在单元格上使用相同的技术时,绑定似乎不起作用,但是换行。我已阅读以下帖子,但看起来我需要在每次放置数据网格后设置样式。它可以不在资源字典中完成,还是我在错误的位置应用包装?
wpf DataGrid change wrapping on cells
WPF toolkit datagrid cell text wrapping
WPF DataGrid Cell Text Wrapping - set to NoWrap (False)
这是datagrid定义(修剪):
<Style x:Key="EmbedDG" TargetType="{x:Type DataGrid}" >
<Setter Property="ColumnHeaderStyle" Value="{DynamicResource DGCH}" />
<Setter Property="CellStyle" Value="{DynamicResource EmbedDGCE}" />
</Style>
以下是显示文本换行的工作DGCH样式:
<Style x:Key="DGCH" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
这是不起作用的单元格样式(带有contenttemplate的图片1,没有带有2的单元格):
<Style x:Key="EmbedDGCE" TargetType="{x:Type DataGridCell}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
编辑:
<DataGrid Style="{DynamicResource EmbedDG}" ItemsSource="{Binding Tags}" >
<DataGrid.Columns>
<DataGridTextColumn Header="Tag Type" Binding="{Binding TagType}" Width="180" />
<DataGridTextColumn Header="Tag Comments" Binding="{Binding Message}" Width="300"/>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:4)
我将摆脱单元格样式并使用模板列。
struct foo {
template <class... Ts>
foo() { }
};
template
foo::foo<int, float, double>();
我认为它为您提供了完全限定的类名,因为您的单元格模板正在尝试在TextBlock中显示对象。我没有时间玩它,但无论你的代码中有什么问题,上面都应该有效。