Wpf 带有样式的DataGrid数据绑定问题
我有一个WPF数据网格,我想对所有单元格应用文本换行,因此我定义了以下样式:Wpf 带有样式的DataGrid数据绑定问题,wpf,data-binding,datagrid,Wpf,Data Binding,Datagrid,我有一个WPF数据网格,我想对所有单元格应用文本换行,因此我定义了以下样式: <DataGrid.CellStyle> <Style TargetType="DataGridCell"> <Setter Property="ContentTemplate"> <Setter.Value> &
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextWrapping="Wrap" FontSize="15" Text="{Binding}" VerticalAlignment="Center"
HorizontalAlignment="Center" ></TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="95" />
<DataGridTextColumn Header="Address" Binding="{Binding Address}" Width="95" />
<DataGridTextColumn Header="Category" Binding="{Binding Category}" Width="95" />
</DataGrid.Columns>
但是,我在样式Text=“{binding}”
中设置的绑定表达式出现了一些问题,最终导致:
显然,绑定表达式Text=“{binding}”
失败了,我知道这一点,因为当我删除样式时,一切都很正常。我该如何着手解决这个问题
提前感谢。这将有助于:
<Style x:Key="MyGrid" TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border x:Name="MyBorder" >
<TextBlock Background="Transparent" TextWrapping="WrapWithOverflow"
TextTrimming="CharacterEllipsis" Height="auto" Width="auto">
<ContentPresenter
Content="{TemplateBinding Property=ContentControl.Content}"
ContentTemplate="{TemplateBinding Property=ContentControl.Content}"/>
</TextBlock>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
取自。设置
DataGridColumn.Binding
属性不会为每个DataGridCell
设置DataContext
。DataContext
仍然等于整行的DataContext
从绑定ContentTemplate
切换到绑定Template
,然后您就可以访问ContentPresenter
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<TextBlock TextWrapping="Wrap" FontSize="15"
VerticalAlignment="Center" HorizontalAlignment="Center">
<ContentPresenter Content="{TemplateBinding Content}" />
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<TextBlock TextWrapping="Wrap" FontSize="15"
VerticalAlignment="Center" HorizontalAlignment="Center">
<ContentPresenter Content="{TemplateBinding Content}" />
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>