【问题标题】:style trigger on datagrid element name数据网格元素名称上的样式触发器
【发布时间】:2016-09-12 07:27:53
【问题描述】:

我想在 window.resources 标签内设置我的样式 我需要在 DatagridTextColumn 上设置 maxlength 属性,但我找不到可行的解决方案。

windows 资源:

<Window.Resources>
    <Style x:Key="CellEditStyle" TargetType="{x:Type TextBox}">
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Padding" Value="0"/>
        <Style.Triggers>
            <DataTrigger Binding="{??? ElementName=RefFourn ???}">
                <Setter Property="MaxLength" Value="19"/>
            </DataTrigger>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

xaml 数据网格:

<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn x:Name="RefFourn" Header="Ref Fourn" EditingElementStyle="{StaticResource CellEditStyle}" Binding="{Binding Path=RefFourn, ValidatesOnDataErrors=True, NotifyOnValidationError=True}">
</Datagrid.Columns
</Datagrid>

【问题讨论】:

  • 条件不明确。何时要定义最大长度?
  • 表单加载时
  • 所以你不需要触发器。您只需要在 CellEditStyle 中定义一个 setter。
  • 如果我这样做,我将不得不删除 EditingElementStyle 属性,以便在我的每个列中重新编写资源样式标记的内容。我认为这是重复的代码,难以阅读/维护。所以我不想在每一列中设置我的样式,而是在 window.resources 样式中。
  • 为什么需要删除它?

标签: c# wpf


【解决方案1】:

改变你的风格如下:

  <Style x:Key="CellEditStyle" TargetType="{x:Type TextBox}">
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="MaxLength" Value="19"/>
        <Setter Property="Padding" Value="0"/>
        <Style.Triggers>               
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
            </Trigger>
        </Style.Triggers>
    </Style>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 2021-11-20
    • 2023-03-11
    • 2012-09-17
    • 2012-02-05
    • 1970-01-01
    • 2013-12-18
    相关资源
    最近更新 更多