2013-05-08 14 views
6

Mam ComboBox i Button w moim głównym widoku i chcę zastosować styl przycisku, tak że gdy indeks combobox jest ustawiony na 1, przycisk staje się widoczny (początkowo jest ukryty). To jest mój kodu XAML:Problemy z ustawianiem DataTriggera w WPF

<Grid> 
    <StackPanel Orientation="Vertical" Margin="10"> 
     <ComboBox Name="comboBox"/> 

     <Button Name="myBtn" Content="Hello" Visibility="Hidden"> 
      <Button.Style> 
       <Style TargetType="{x:Type Button}"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="1"> 
          <Setter Property="Visibility" Value="Visible"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </Button.Style> 
     </Button> 
    </StackPanel> 
</Grid> 

ktoś już zadał pytanie o here i robię prawie to samo, ale to nie działa, przycisk pozostaje ukryta nawet, gdy indeks jest zmieniana do 1. Comobox jest początkowo zapełniany w kodzie za pomocą 2 elementów. Każda pomoc jest doceniana.

Odpowiedz

15

Problem polega na tym, że wartości właściwości zależności ustawione lokalnie (podobnie jak w przypadku widoczności) mają wyższy priorytet niż te ustawione za pomocą wyzwalacza stylu. W związku z tym, nawet po naciśnięciu wyzwalacza, nie zastąpi on wartości, którą już ustawiłeś.

Prostym rozwiązaniem jest zamiast ustawić wartość domyślną w stylu Setter:

<Button Name="myBtn" Content="Hello"> 
     <Button.Style> 
      <Style TargetType="{x:Type Button}"> 
       <Setter Property="Visibility" Value="Hidden"/> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding ElementName=comboBox, Path=SelectedIndex}" Value="1"> 
         <Setter Property="Visibility" Value="Visible"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
    </Button> 

A teraz wyzwalacz zastąpi wartość właściwości, gdy jest trafiony.

Podczas pobytu należy spojrzeć na stronę this link, która zawiera kolejność pierwszeństwa przy ustawianiu wartości DP.

Powiązane problemy