首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP VisualTreeHelper.GetParent()返回null

UWP VisualTreeHelper.GetParent()返回null
EN

Stack Overflow用户
提问于 2018-05-24 10:31:12
回答 1查看 1.5K关注 0票数 14

我有一个ContentDialog,它有一个ListView。这个ListView's DataTemplate包含一个Grid,而这个Grid有一个Button。代码是这样的:

代码语言:javascript
复制
<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>

下面是我的按钮单击事件处理程序:

代码语言:javascript
复制
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总是在我的PC上返回null。但是,当我在我的移动设备上部署时,同样的代码工作得很好(即变量grid被分配了正确的值)。

更新:这里是我的Live,它确认按钮有一个父网格。

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

注意:我尝试过将App版本更改为1803,但问题仍然存在。

EN

回答 1

Stack Overflow用户

发布于 2018-05-29 07:18:23

正如我从一个不同的问题中了解到的,有几种方法可以获得VisualTreeHelper的父级。可能是在您的手机或PC上,在后台,不同的东西被加载,以便您可以找到网格对象的位置改变。

您可以检查这个答案,作为我上面所述的参考:FrameworkElement.Parent and VisualtreeHelper.GetParent behaves differently

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50507068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档