2010-02-11 22 views
12

StackPanel için DataTrigger'u nasıl tanımlarım? Bir Trigger özelliği vardır, ancak uygulamayı başlatırken burada bir tetikleyici tanımlayan başlat üzerine aşağıdaki hatayı veriyor kapsamaz:StackPanel için DataTrigger Tanımlanması

Başarısız nesne başlatma (ISupportInitialize.EndInit). Tetikleyicileri toplama üyeleri, EventTrigger türünde olmalıdır. ....

Bu aşağıdaki basit DataTrigger gelen verilir:

<StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}"> 
    <TextBlock Text="{Binding Id}" /> 
    <TextBlock Text="{Binding Name}" /> 
    <StackPanel.Triggers> 
     <DataTrigger Binding="{Binding Id}" Value="1"> 
      <Setter TargetName="PersonPanel" Property="StackPanel.Background" Value="Green" /> 
     </DataTrigger>     
    </StackPanel.Triggers> 
</StackPanel> 

Bu yanlış ne yapacağız bu yüzden, hiç benim ilk Trigger mı? Trigger'u başka bir yerde tanımlamalı mıyım?

cevap

11

bu

<Window.Resources> 
     <Style x:Key="spStyle" TargetType="StackPanel"> 
      <Setter Property="StackPanel.Background" Value="Red" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Id}" Value="1"> 
        <Setter Property="StackPanel.Background" Value="Green" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 
    <StackPanel x:Name="PersonPanel" Style="{StaticResource spStyle}" DataContext="{Binding CurrentPerson}"> 
     <TextBlock Text="{Binding Id}" /> 
     <TextBlock Text="{Binding Name}" /> 
    </StackPanel> 
+0

Thx! Mükemmel çalışıyor :-) – stiank81

7

bu deneyin:

<TextBlock Text="{Binding Id}"> 
    <TextBlock.Style> 
     <Style> 
      <Style.Triggers> 
       <Trigger Property="TextBlock.Text" Value="1"> 
        <Setter TargetName="PersonPanel" Property="StackPanel.Background" Value="Green" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 
+1

Thx gibi bir şey deneyin! Bu işe yarıyor ama Faysal'ın çözümü ile gittim .. – stiank81

+0

Rica ederim. –