2010-02-11 7 views
12

के लिए डेटा ट्रिगर को परिभाषित करना StackPanel के लिए मैं DataTrigger को कैसे परिभाषित करूं? यह एक Trigger संपत्ति है, लेकिन जब आवेदन शुरू करने के लिए यहाँ एक ट्रिगर को परिभाषित प्रारंभ पर निम्न त्रुटि देता है:स्टैकपैनल

विफल वस्तु प्रारंभ (ISupportInitialize.EndInit)। ट्रिगर संग्रह सदस्यों को EventTrigger प्रकार का होना चाहिए। ....

यह निम्नलिखित सरल DataTrigger से दिया जाता है:

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

यह है कि मैं क्या गलत करते हो मेरी पहली Trigger कभी है, इसलिए? क्या मुझे Trigger कहीं और परिभाषित करना चाहिए?

उत्तर

11

इस

<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! अच्छी तरह से काम :-) – stiank81

7

इस प्रयास करें:

<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 की तरह कुछ कोशिश करो! यह काम करता है, लेकिन मैं फैसल के समाधान के साथ गया .. – stiank81

+0

आपका स्वागत है। –

संबंधित मुद्दे