I searched and did not see a solution.
我搜索并没有看到解决方案。
I can only get the validation to show the tooltip if I do not set a tooltip in the combo box tooltip property. I would like to see the validation error tooltip when one is present otherwise show the tooltip from the combobox property. The validation tooltip shows up fine when I remove the text from the tooltip property (i.e. from the property panel for the combo box).
如果我没有在组合框tooltip属性中设置工具提示,我只能获得验证以显示工具提示。我希望看到验证错误工具提示,否则显示组合框属性中的工具提示。当我从工具提示属性中删除文本时(即从组合框的属性面板中),验证工具提示显示正常。
The XAML in Application.Resources (App.XAML)for the tooltip to show the validation error is
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>
I also use a validation template for the Combobox as follows. This is in the UserControl.Resources section within the user control cs file.
我还使用了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>
The control itself is defined as follows. Note that there are other references not defined here (but hopefully not pertinent - feel free to let me know if questions).
控件本身定义如下。请注意,此处未定义其他引用(但希望不相关 - 如果有问题,请随时告诉我)。
<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>
Thanks! Buck
1 个解决方案
#1
8
In your style triggers you set the tooltip to the Validation error when you have an error. You can do the same when you don't have an error by manipulating the Value
property of the Trigger
在您的样式触发器中,您在出现错误时将工具提示设置为验证错误。通过操作Trigger的Value属性,可以在没有错误时执行相同的操作
<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>
On another note I'd recommend changing Path=(Validation.Errors)[0].ErrorContent
to Path=(Validation.Errors).CurrentItem.ErrorContent
另一方面,我建议将Path =(Validation.Errors)[0] .ErrorContent更改为Path =(Validation.Errors).CurrentItem.ErrorContent
#1
8
In your style triggers you set the tooltip to the Validation error when you have an error. You can do the same when you don't have an error by manipulating the Value
property of the Trigger
在您的样式触发器中,您在出现错误时将工具提示设置为验证错误。通过操作Trigger的Value属性,可以在没有错误时执行相同的操作
<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>
On another note I'd recommend changing Path=(Validation.Errors)[0].ErrorContent
to Path=(Validation.Errors).CurrentItem.ErrorContent
另一方面,我建议将Path =(Validation.Errors)[0] .ErrorContent更改为Path =(Validation.Errors).CurrentItem.ErrorContent