gpt4 book ai didi

wpf - 没有验证错误 WPF 时不显示工具提示

转载 作者:行者123 更新时间:2023-12-04 17:50:11 33 4
gpt4 key购买 nike

我搜索并没有看到解决方案。

如果我没有在组合框工具提示属性中设置工具提示,我只能获得显示工具提示的验证。我想在存在时查看验证错误工具提示,否则显示来自组合框属性的工具提示。当我从工具提示属性(即从组合框的属性面板)中删除文本时,验证工具提示显示正常。

Application.Resources (App.XAML) 中用于显示验证错误的工具提示的 XAML 是

    <Style x:Key="StandardComboBoxStyle" TargetType="{x:Type ComboBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>

我还为 Combobox 使用了一个验证模板,如下所示。这是在用户控件 cs 文件中的 UserControl.Resources 部分中。
<ControlTemplate x:Key="comboBoxValidationTemplate">
<DockPanel Name="myDockPanel">
<Border BorderBrush="Red" BorderThickness="3">
<AdornedElementPlaceholder Name="MyAdorner" />
</Border>
<TextBlock Text="*" FontWeight="Bold" FontSize="18" Foreground="Red" DockPanel.Dock="Left" />
</DockPanel>
</ControlTemplate>

控件本身定义如下。请注意,这里还没有定义其他引用文献(但希望不是相关的 - 如果有问题,请随时告诉我)。
        <ComboBox x:Name="ExposureTime" SelectedValuePath="Content"
Text="{Binding ExposureTime, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" IsEditable="True" Validation.ErrorTemplate="{StaticResource comboBoxValidationTemplate}"
HorizontalContentAlignment="Right" FontSize="18" Margin="136,47,462,0" Height="27" VerticalAlignment="Top" GotFocus="ComboBox_GotFocus_1" LostFocus="ComboBox_LostFocus_1" PreviewTextInput="ExposureTime_PreviewTextInput" Opacity="{Binding BackgroundOpacity, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" FontWeight="Thin" Style="{DynamicResource StandardComboBoxStyle}" SelectedValue="{Binding Mode=OneWay, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" IsTextSearchEnabled="False" ToolTip="My tooltip test.">
<ComboBoxItem Content="0.05"/>
<ComboBoxItem Content="0.1"/>
<ComboBoxItem Content="0.2" />
<ComboBoxItem Content="1" />
<ComboBoxItem Content="2" />
<ComboBoxItem Content="5" />
<ComboBoxItem Content="10" />
<ComboBoxItem Content="20" />
<ComboBoxItem Content="60" />
<ComboBox.IsEnabled >
<MultiBinding Converter="{StaticResource multiBooleanConverter}">
<Binding Path="NotPerformingExposure" UpdateSourceTrigger="PropertyChanged"/>Th
<Binding Path="NotPerformingFocusTest" UpdateSourceTrigger="PropertyChanged"/>
</MultiBinding>
</ComboBox.IsEnabled>
</ComboBox>

谢谢!
巴克

最佳答案

在您的样式触发器中,您可以在出现错误时将工具提示设置为验证错误。当你没有错误时,你可以通过操作 Value 来做同样的事情。 Trigger 的属性(property)

<Style x:Key="StandardComboBoxStyle" TargetType="{x:Type ComboBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
<Trigger Property="Validation.HasError" Value="False">
<Setter Property="ToolTip" Value="My tooltip test." />
</Trigger>
</Style.Triggers>
</Style>

另一方面,我建议更改 Path=(Validation.Errors)[0].ErrorContentPath=(Validation.Errors).CurrentItem.ErrorContent

关于wpf - 没有验证错误 WPF 时不显示工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324855/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com