【问题标题】:How to control the height of the template in WpfWpf中如何控制模板的高度
【发布时间】:2016-04-26 20:52:37
【问题描述】:

我正在研究一种在新行上显示红色边框、错误图像和错误文本的文本框样式。 如果它在文本框底部有空间,如下图所示。

如果验证文本框下方有其他控件,则我看不到图标和错误文本。


修复此模板的最佳方法是什么?

<Setter Property="Template">
   <Setter.Value>
       <ControlTemplate TargetType="{x:Type TextBox}">
                    <StackPanel>
                        <Border x:Name="Bd" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                            <ScrollViewer VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                        </Border>
                        <Grid x:Name="errorBlock" Visibility="Hidden" Margin="0,2,0,-30" Z>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Image Grid.Column="0" Source="Error.png"  Height="14" Width="14"
                                   HorizontalAlignment="Left"  VerticalAlignment="Center"  Margin="0,0,5,0"/>
                            <TextBlock Grid.Column="1" Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TextBox}},Path=(Validation.Errors)[0].ErrorContent}"  />
                        </Grid>
                    </StackPanel>
                    <ControlTemplate.Triggers>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="Validation.HasError" Value="True"/>
                                <Condition Property="IsEnabled" Value="True"/>
                            </MultiTrigger.Conditions>
                            <Setter Property="Visibility"  TargetName="errorBlock" Value="Visible" />                           
                        </MultiTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

【问题讨论】:

    标签: wpf validation templates styles


    【解决方案1】:

    我认为你不应该在 Margin 上使用 -30 - 它会产生一些意想不到的行为。我宁愿使用两行 Grid 而不是 StackPanel,并将第二行高度设置为 Auto with Visibility="Collapsed"。

        <ControlTemplate TargetType="{x:Type TextBox}">
            <Grid>
                <Grid.RowDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.RowDefinitions>
                <Border x:Name="Bd" >
                    <ScrollViewer x:Name="PART_ContentHost" />
                </Border>
                <Grid x:Name="errorBlock" Visibility="Collapsed" Height="14" Grid.Row="1">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="19"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Image Source="Error.png" Height="14" Width="14" Margin="0,0,5,0"/>
                    <TextBlock Grid.Column="1" Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TextBox}},Path=(Validation.Errors)[0].ErrorContent}"  />
                </Grid>
            </Grid>
            <ControlTemplate.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="Validation.HasError" Value="True"/>
                        <Condition Property="IsEnabled" Value="True"/>
                    </MultiTrigger.Conditions>
                    <Setter Property="Visibility"  TargetName="errorBlock" Value="Visible" />
                </MultiTrigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    

    【讨论】:

      猜你喜欢
      • 2012-06-30
      • 2016-02-05
      • 2023-03-14
      • 1970-01-01
      • 2011-02-13
      • 2012-08-07
      • 2023-03-03
      • 2011-04-01
      • 1970-01-01
      相关资源
      最近更新 更多