12

我正在尝试将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>

注意事项: 1. 如果有任何区别,这是WinRT;用 C# 编写的 Metro 应用程序。2.boolConverter是一个相当标准的转换器,看起来工作正常。

4

3 回答 3

3

使用Mode=FindAncestor

<TextBlock Grid.Column="3" VerticalAlignment="Bottom"
          Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListViewItem}, Path=IsSelected, Converter={StaticResource boolConverter}, Mode=OneWay}">
于 2011-10-24T10:07:09.203 回答
2

我认为在这种情况下,您将不得不使用ElementName =ItemListView

于 2011-10-30T16:59:01.273 回答
-1

@Murven 的答案很接近。这对我有用:

<TextBlock Visibility="{Binding DataContext.IsSelected, ElementName=ItemListView Converter={StaticResource boolConverter}, Mode=OneWay}">

我不得不使用DataContext.IsSelected来访问ItemListView. 不确定是否有更好的方法。

于 2014-04-03T20:35:10.953 回答