绑定到父ListViewItem的IsSelected属性

Rob*_*Rob 12 wpf xaml binding windows-runtime winrt-xaml

我正在尝试将TextBlockListView的ItemTemplate中的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>
Run Code Online (Sandbox Code Playgroud)

注意:1.如果有任何不同,这是WinRT; 用C#编写的Metro应用程序.2. boolConverter是一个相当标准的转换器似乎正常工作.

Tho*_*que 4

使用Mode=FindAncestor

<TextBlock Grid.Column="3" VerticalAlignment="Bottom"
          Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}, Path=IsSelected, Converter={StaticResource boolConverter}, Mode=OneWay}">
Run Code Online (Sandbox Code Playgroud)

  • FindAncestor 似乎不是 WinRT 中的一个选项:| (2认同)
  • 呃...我不知道这一点。他们删除它似乎很疯狂,我不知道该用什么来代替...... (2认同)