我正在尝试将ListView的ItemTemplate中保存的TextBlock
的Visibility属性绑定到TextBlock的父ListViewItem的IsSelected属性。
使用此标记,TextBlock始终可见。
<ListView x:Name="ItemListView" ItemsSource="{Binding Path=Accounts}" Margin="60,0,0,10" Grid.Row="1" Grid.Column="0">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100">
</ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="200"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Width="100" Height="100" Grid.Column="0"></Image>
<StackPanel Grid.Column="1">
<TextBlock Text="{Binding Path=Account.Name}"
FontSize="24" Margin="5,0,0,0" TextWrapping="Wrap" />
</StackPanel>
<TextBlock Grid.Column="3" VerticalAlignment="Bottom"
Visibility="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=IsSelected, Converter={StaticResource boolConverter}, Mode=OneWay}">
Show More Details...
</TextBlock>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
注意:
如果它有任何区别,那就是WinRT;用C#编写的Metro应用程序。
2. boolConverter
是一个相当标准的转换器,似乎可以正常工作。
答案 0 :(得分:2)
我认为在这种情况下你必须使用ElementName = ItemListView
答案 1 :(得分:1)
使用Mode=FindAncestor
:
<TextBlock Grid.Column="3" VerticalAlignment="Bottom"
Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}, Path=IsSelected, Converter={StaticResource boolConverter}, Mode=OneWay}">
答案 2 :(得分:-1)
@Murven的答案很接近。这对我有用:
<TextBlock Visibility="{Binding DataContext.IsSelected, ElementName=ItemListView Converter={StaticResource boolConverter}, Mode=OneWay}">
我必须使用DataContext.IsSelected
来访问ItemListView
的上下文。
不确定是否有更好的方法。