0
我有一个WPF项目,我想为我的程序的所有Windows执行隐式样式。 我面临DataGrid中的DataGridTextColumn问题。这是查看模式下的TextBlock和EditMode中的TextBox,但是我的样式不适用于它们。如何在DataGrid中实现TextBox的正确隐式样式(WPF,C#)
我隐式造型
<System:Double x:Key="FontSize">14</System:Double>
<Style x:Key="TextBoxStyle" TargetType="TextBox">
<Setter Property="Margin" Value="3" />
<Setter Property="MinWidth" Value="30" />
<Setter Property="Height" Value="20" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Background" Value="White" />
<Setter Property="FontSize" Value="{StaticResource FontSize}" />
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="Background" Value="LightGray" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxStyle}" />
这个造型是不是在编辑模式应用到DataGridTextColumn。
<Style TargetType="DataGridCell">
<Setter Property="TextElement.FontSize" Value="{StaticResource FontSize}" />
</Style>
然后我找到了解决垂直CenterAlign在DataGridTextColumn
<Style TargetType="DataGridCell">
<Setter Property="TextElement.FontSize" Value="{StaticResource FontSize}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter VerticalAlignment="Center" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
的内容
不幸的是,我现在面对的疆界在我的编辑模式
我尝试了各种解决方案,以尝试并删除周围的文本框边框,但我一直无法。 无论如何,我可以指定我的隐式文本框样式也应该适用于DataGridTextColumn Editmode?
我在找WPF造型是限制和难以理解的。我希望有人能提供一些清晰
我真的希望找到一种方式来隐式设计它们。如果没有人提供解决方案,这将是一个解决方案。 – JesperGJensen
您可以创建一个自定义DataGridTextColumn类,该类始终将EditingElementStyle设置为您的自定义样式。 – mm8
您的解决方案显然可行,并感谢您的意见。我已经将其标记为答案。可惜WPF不完全支持隐式设置 – JesperGJensen