Допустим, у меня есть следующие простые классы:
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; }
}
Теперь у меня есть сетка с экземпляром класса PersonHolder как DataContext
, а в сетке у меня есть StackPanel
, который связан с CurrentPerson
из PersonHolder
- показывая его данные:
<Grid>
<StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}">
<TextBlock Text="{Binding Id}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</Grid>
Итак - на вопрос: как я могу дать StackPanel
зеленый фон, когда CurrentPerson
имеет Id
, совпадающий с ActiveId
из PersonHolder
( да, очень полезно, но это просто очень упрощенный пример .. ). Я думаю, что для этого используется триггер, но могу ли я использовать привязки в значении моего условия триггера? Если так, я мог бы сделать что-то вроде этого:
<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>
Но это не работает. Как я могу решить это?