我正在尝试通过ChangePropertyAction更改ListBoxItem模板中控件的可见性(基于它在父列表框中选择),但下面的代码不起作用。我试图摆弄触发器上的TargetName或通过样式设置控件的默认可见性。我通过DebugConvert调试了Binding,并检查IsSelected是否正确设置为true但它仍然不起作用。任何人都可以向我解释为什么这不起作用以及我如何解决这个问题?
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding PersonalData.LastName}" FontSize="20" FontWeight="Bold" Grid.Column="0"/>
<TextBlock FontSize="20" Text="{Binding PersonalData.FirstName}" Grid.Column="1" />
<StackPanel x:Name="buttonStackPanel" Orientation="Horizontal" Grid.Column="2" Visibility="Collapsed">
<Interactivity:Interaction.Triggers>
<ei:DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListBoxItem}, Mode=FindAncestor}, Path=IsSelected, Converter={StaticResource DebugConverter}}">
<ei:ChangePropertyAction PropertyName="Visibility">
<ei:ChangePropertyAction.Value>
<Visibility>Visible</Visibility>
</ei:ChangePropertyAction.Value>
</ei:ChangePropertyAction>
</ei:DataTrigger>
</Interactivity:Interaction.Triggers>
<Button Content="Do Something"></Button>
</StackPanel>
</Grid>
[...]
答案 0 :(得分:0)
除非您使用自定义列表框项容器,否则只需使用FindAncestor模式中的RelativeSource绑定将StackPanel的Visibility属性绑定到容器ListBoxItem的IsSelected属性。