UWP VisualTreeHelper.GetParent()返回null

rav*_*mar 12 c# xaml uwp

我有一个ContentDialogListView.这个ListView'sDataTemplate包含一个,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>
Run Code Online (Sandbox Code Playgroud)

这是我的Button Click事件处理程序:

private async void Button_Click(object sender, RoutedEventArgs e)
{
    var grid = VisualTreeHelper.GetParent(sender as Button) as Grid;
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

问题是变量VisualTreeHelper.GetParent(sender as Button) as Grid总是null在我的电脑上返回.但是,当我在移动设备上部署时,相同的代码完全正常(即变量grid被赋予正确的值).

更新: 这是我的实时视觉树,它确认按钮有一个父网格. 图片

App min版本:build 14393 App目标版本:Build 15063 PC windows版本:Build 17134(版本1803)

注意:我已尝试将App目标版本更改为1803,但问题仍然存在.

小智 4

据我从另一个问题中了解到,有多种方法可以获取 VisualTreeHelper 的父级。是否在您的移动设备或 PC 上,后台加载了不同的内容,以便您可以找到网格对象的位置发生变化。

您可以检查这个答案作为我上面所说的参考:FrameworkElement.Parent 和 VisualtreeHelper.GetParent 的行为不同