चलो कहते हैं कि मैं निम्नलिखित सरल कक्षाओं करते हैं:का उपयोग बाइंडिंग
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
public class PersonHolder
{
public Person CurrentPerson { get; set; }
public int ActiveId { get; set; }
}
अब मैं DataContext
के रूप में वर्ग PersonHolder का एक उदाहरण के साथ एक ग्रिड है, और ग्रिड में मैं एक StackPanel
जो करने के लिए बाध्य कर रहा है PersonHolder
की CurrentPerson
- अपने डेटा दिखाने:
<Grid>
<StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}">
<TextBlock Text="{Binding Id}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</Grid>
तो - सवाल का: मैं कैसे StackPanel
एक हरे रंग की पृष्ठभूमि दे सकते हैं जब CurrentPerson
एकहै(हाँ) ActiveId
से मेल खाता है, बहुत उपयोगी है, लेकिन यह एक बेहद सरल उदाहरण है ..)। मेरा विचार यह है कि यह एक ट्रिगर का उपयोग करता है, लेकिन क्या मैं अपने ट्रिगर स्थिति मूल्य में बाइंडिंग का उपयोग कर सकता हूं? यदि ऐसा है तो मैं ऐसा कुछ कर सकता हूं:
<Grid x:Name="Foo">
<StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}">
<TextBlock Text="{Binding Id}" />
<TextBlock Text="{Binding Name}" />
<StackPanel.Triggers>
<DataTrigger Binding="{Binding Id}" Value="{Binding ElementName=Foo, Path=ActiveId}">
<Setter TargetName="PersonPanel" Property="Background" Value="Green" />
</DataTrigger>
</StackPanel.Triggers>
</StackPanel>
</Grid>
लेकिन यह काम नहीं करता है। इसे कैसे हल किया जा सकता है?