У меня есть ContentDialog
, который имеет ListView
.Этот ListView's
шаблон данных содержит Grid
, а этот Grid
имеет Button
.Код выглядит следующим образом:
<ContentDialog x:Name="DownloadListDialog" x:FieldModifier="public" Grid.Column="1">
<ListView Name="AssetsListView" IsItemClickEnabled="False" Grid.Row="1" SelectionMode="Single" MaxHeight="500" ItemsSource="{x:Bind _viewModel.Assets, Mode=OneWay}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
...
...
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate x:DataType="viewModel:AssetViewModel">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="{x:Bind name}"/>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{x:Bind lblFileSize}"/>
<TextBlock Text="{x:Bind contentSize, Mode=OneWay}"/>
<TextBlock Text="{x:Bind contentUrl}" Visibility="Collapsed"/>
</StackPanel>
</StackPanel>
<Button Content="Download" Click="Button_Click" HorizontalAlignment="Right" Grid.Column="1"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentDialog>
Вот мой обработчик событий нажатия кнопки:
private async void Button_Click(object sender, RoutedEventArgs e)
{
var grid = VisualTreeHelper.GetParent(sender as Button) as Grid;
...
...
}
Проблема в том, что переменная VisualTreeHelper.GetParent(sender as Button) as Grid
всегда возвращает null
на моем ПК.Но этот же код при развертывании на моем мобильном телефоне работает отлично (т. Е. Переменной grid
назначается правильное значение).
ОБНОВЛЕНИЕ: Вот мое Live Visual Tree, и оно подтверждает, чтокнопка имеет родительскую сетку.
Мин. Версия приложения: сборка 14393 Целевая версия приложения: сборка 15063 Версия для ПК: сборка 17134 (версия 1803)
Примечание: я пытался изменитьцелевая версия приложения до 1803 г., но проблема остается.