UWP VisualTreeHelper.GetParent () возвращает ноль - PullRequest
0 голосов
/ 24 мая 2018

У меня есть 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, и оно подтверждает, чтокнопка имеет родительскую сетку.image

Мин. Версия приложения: сборка 14393 Целевая версия приложения: сборка 15063 Версия для ПК: сборка 17134 (версия 1803)

Примечание: я пытался изменитьцелевая версия приложения до 1803 г., но проблема остается.

1 Ответ

0 голосов
/ 29 мая 2018

Как я понял из другого вопроса, есть несколько способов получить родителя VisualTreeHelper.Может ли быть так, что на вашем мобильном или ПК в этом отношении в фоновом режиме загружаются разные вещи, так что местоположение, где вы можете найти объект сетки, меняется.

Вы можете проверить этот ответ как ссылку на то, что яуказано выше: FrameworkElement.Parent и VisualtreeHelper.GetParent ведет себя по-разному

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...