2010-02-11 42 views
12

Làm cách nào để xác định DataTrigger cho số StackPanel? Nó không có một tài sản Trigger, nhưng việc xác định một kích hoạt ở đây cung cấp cho các lỗi sau trên Initialize khi khởi động ứng dụng:Xác định DataTrigger cho StackPanel

Không đối tượng khởi tạo (ISupportInitialize.EndInit). Thành viên bộ sưu tập kích hoạt phải thuộc loại EventTrigger. ....

này được đưa ra từ đơn giản DataTrigger sau:

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

Đây là Trigger đầu tiên của tôi bao giờ, vì vậy tôi phải làm gì sai? Tôi có nên xác định Trigger ở nơi khác không?

Trả lời

11

Hãy thử một cái gì đó giống như

<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! Hoạt động hoàn hảo :-) – stiank81

7

thử điều này:

<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 này! Điều này làm việc, nhưng tôi đã đi với giải pháp của Faisal .. – stiank81

+0

Bạn đang chào đón. –

Các vấn đề liên quan