Sto tentando di associare la proprietà Visibility di un TextBlock
contenuto in ItemTemplate per un controllo ListView alla proprietà IsSelected del ListViewItem padre di TextBlock.Collegamento alla proprietà IsSelected del genitore ListViewItem
Con questo markup, il TextBlock è sempre visibile.
<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>
Note: 1. Nel caso in cui fa alcuna differenza, questo è WinRT; un'app Metro scritta in C#. 2. boolConverter
è un convertitore abbastanza standard che sembra funzionare correttamente.
Non sono sicuro di WinRT, ma TemplatedParent è per ControlTemplates anziché DataTemplates. Prova Mode = FindAncestor, AncestorType = ListViewItem invece. –
Mostra errori di associazione nella vista di output, suppongo che TemplatedParent qui sia ContentPresenter e non ListView – whoisthis
L'enumerazione Windows.UI.Xaml.Data.RelativeSourceMode non ha (o non sembra!) Un valore per FindAncestor , sfortunatamente – Rob