Ich habe gesucht und keine Lösung gefunden.Tooltip wird nicht angezeigt, wenn kein Validierungsfehler aufgetreten ist WPF
Ich kann die Validierung nur erhalten, um den Tooltip anzuzeigen, wenn ich keine Tooltip in der Tooltip-Eigenschaft des Kombinationsfelds festlegen. Ich möchte die Validierungsfehler-QuickInfo sehen, wenn eine vorhanden ist, ansonsten zeige die QuickInfo aus der Combobox-Eigenschaft. Die Validierungs-QuickInfo wird angezeigt, wenn ich den Text aus der QuickInfo-Eigenschaft entferne (z. B. aus dem Eigenschaftsfenster des Kombinationsfelds).
XAML in Application.Resources (App.xaml) für den Tooltip der Validierungsfehler zeigen
<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 auch eine Validierungsvorlage für die Combobox wie folgt verwenden. Dies ist im Abschnitt UserControl.Resources innerhalb der Benutzersteuerelement-CS-Datei.
<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>
Die Steuerung selbst ist wie folgt definiert. Beachten Sie, dass es andere Referenzen gibt, die hier nicht definiert sind (aber hoffentlich nicht relevant - bitte lassen Sie mich wissen, wenn Sie Fragen haben).
<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>
Vielen Dank! Buck
Großer Resonanz zu verändern. Es funktioniert perfekt - danke !! – Buck
Tolle Lösung, aber was würde ich tun, wenn ich dies auf verschiedene Kombinationsfelder anwenden möchte, von denen jedes einen anderen Tooltip hat. I.e. Combobox1 hat Tooltip "Ich bin eins" und ComboBox2 hat Tooltip "Ich bin # 2". Ich vermute etwas wie aber es funktioniert nicht! –
Dave