代码之家  ›  专栏  ›  技术社区  ›  javacoder123

如何使工具提示具有圆角-WPF

  •  2
  • javacoder123  · 技术社区  · 6 年前

    我创建了一个小的WPF应用程序,页面上有许多文本框。所有这些文本框都有圆角。

    我使用了MVVM模式并实现了IDataErrorInfo接口来向用户显示错误。当其中一个文本框的边缘为空时,工具提示应该显示为红色,这是我成功完成的。

    我现在希望红色边缘也有圆角,如文本框。如图所示,红色边框显示为文本框为空,红色边框需要有一个角半径。

    Red border shown here

    <!-- Text box xaml code that is used to display the error and binding -->
        <TextBox Style="{StaticResource TextBoxBase}"
                                 Name="FirstName"
                                 Text="{Binding FirstName, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Source={StaticResource CustomerObject}, ValidatesOnDataErrors=True}"/>
    
    
    <!-- Code that changes the tool tip if it's null -->
    <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}" />
    
                </Trigger>
            </Style.Triggers>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Babbillumpa    6 年前

    可以为错误创建特定的工具提示样式:

    下面是自定义工具提示样式的示例 CornerRadius=“4” :

    <Style x:Key="ErrorRoundedTooltip" TargetType="ToolTip">
      <Setter Property="OverridesDefaultStyle" Value="true" />
      <Setter Property="HasDropShadow" Value="True" />
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="ToolTip">
            <Border Name="Border" CornerRadius="4"
                    BorderThickness="1"
                    Width="{TemplateBinding Width}"
                    Height="{TemplateBinding Height}">
              <ContentPresenter Margin="4" HorizontalAlignment="Left" VerticalAlignment="Top" />
            </Border>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
      <Setter Property="Content">
           <Setter.Value>
                <ItemsControl ItemsSource="{Binding Path=(Validation.Errors)}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding ErrorContent.ValidationMessage}" VerticalAlignment="Center"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Setter.Value>
        </Setter>
    </Style>
    
    <ToolTip x:Key="ErrorRepository" Style="{StaticResource ErrorRoundedTooltip}" />
    
    <Style TargetType="{x:Type TextBox}">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="True">
                <Setter Property="ToolTip" Value="{StaticResource ErrorRepository}" />
            </Trigger>
        </Style.Triggers>
    </Style>