我有一个ContentDialog有ListView.这个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 的行为不同
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |