У меня есть ContentDialog
который имеет ListView
. Этот DataTemplate 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>
Здесь мой обработчик события Click Click:
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
получает правильное значение).
UPDATE: Здесь мое Live Visual Tree и оно подтверждает, что кнопка имеет родительскую сетку.
Версия приложения min: build 14393 Версия целевого приложения: Build 15063 Версия для ПК для ПК: Build 17134 (версия 1803)
Примечание. Я попытался изменить целевую версию приложения на 1803, но проблема остается.