虽然MSDN似乎令人困惑,他说"你不能像使用简单控件一样使用Validation.ErrorTemplate附加属性",但我发现在我的每个窗口xaml中都可以设置验证错误模板,如下所示:
<DataGridTextColumn ...>
...
<DataGridTextColumn.EditingElementStyle>
<Style>
<Setter Property="Validation.ErrorTemplate"
Value="{StaticResource MyValidationErrorTemplate}"/>
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)
我现在想要的是为共享主题资源字典中的所有数据网格设置错误模板.但我不能做到以下几点:
<Style TargetType="{x:Type DataGridTextColumn}">
<Setter Property="Validation.ErrorTemplate"
Value="{StaticResource MyValidationErrorTemplate}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
因为DataGridTextColumn不是继承自的FrameworkElement; 因此不能有样式属性(请参阅为什么我不能设置DataGridTextColumn样式?).
有人能指出我正确的方向吗?
我的项目中有一个数据网格,在获取字符串后,其中一部分不适合,因为它们太长了.我希望我的文本框列具有固定的大小,所以我不想为文本框使用"自动"宽度属性,但我想知道:是否有某种属性可以用来显示整个字符串?例如:如果字符串是长显示它的一部分你可以适合,然后显示三个点(...)或一些像这样的符号.点击三个点后显示文本框的整个值.或者甚至在滚动一些文本框后显示整个字符串.
我的数据网格看起来像这样.

在那里你可以看到一些太长的字符串值被削减了.
这是数据网格中文本框的xaml代码.
<DataGrid Grid.Column="0" Grid.RowSpan="2" AutoGenerateColumns="False" Height="206" HorizontalAlignment="Left" Margin="12,265,0,0" Name="tabela" VerticalAlignment="Top" Width="556" SelectionChanged="tabela_SelectionChanged" ItemsSource="Binding MyObsCollection">
<DataGrid.Columns>
<DataGridTextColumn Header="Type" Width="120" Binding="{Binding Type}"/>
<DataGridTextColumn Header="MapTo" Width="120" Binding="{Binding MapTo}"/>
<DataGridTextColumn Header="Name" Width="116" Binding="{Binding Name}"/>
</DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)