2013-08-19 19 views
5

Aradım ve bir çözüm görmedim.Araç İpucu Doğrulama Hatası Olmadığında Gösterilmiyor WPF

Bir onay kutusu araç kutusu özelliğinde bir araç ipucu ayarlamıyorsam, yalnızca ipucunu gösterecek şekilde doğrulama yapabilirim. Varsa, onaylama ipucu araç ipucunu görmek istiyorum, aksi takdirde araç ipucunu combobox özelliğinden gösterin. Doğrulama araç ipucu, metni araç ipucu özelliğinden (yani, birleşik giriş kutusunun özellik panelinden) kaldırdığımda iyi görünür.

doğrulama hatası göstermek ipucu için Application.Resources XAML (App.xaml) aşağıdaki gibi

<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> 

Ayrıca Combobox'undan için bir onaylama şablon kullanmaktır. Bu, kullanıcı denetimi cs dosyasındaki UserControl.Resources bölümünde bulunur. Denetimin kendisi aşağıdaki gibi tanımlanmaktadır. Burada tanımlanmayan başka referanslar olduğunu unutmayın (ama umarım uygun değildir - sorularım varsa bana bildirmekten çekinmeyin).

 <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> 

Teşekkürler! Toka

cevap

8

Tarzınız tetiklendiğinde, hata oluştuğunda araç ipucunu Doğrulama hatasına ayarlıyorsunuz. Eğer ben Path=(Validation.Errors).CurrentItem.ErrorContent

+0

Büyük yanıta Path=(Validation.Errors)[0].ErrorContent değişen öneriyoruz başka not Trigger

<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> 

ait Value özelliğini manipüle ederek bir hata olmadığı halde zaman aynısını yapabilirsiniz. Mükemmel çalışıyor - teşekkürler! – Buck

+0

Harika bir çözüm, ancak bunu her biri farklı bir araç ipucuna sahip olan farklı açılan kutulara uygulamak istersem ne yapmalıyım? Yani Combobox1 "Ben birim" araç ipucu ve ComboBox2 "Ben # 2" araç ipucu vardır. gibi bir şey tahmin ediyorum ama işe yaramıyor! – Dave