我正在尝试在列表的datatemplate中创建一个删除按钮,该按钮仅在用户单击应用程序栏中的按钮时显示。我正在使用可视化树来访问listcontainer中的元素,但它显示项容器只有一个border元素而没有别的 这是我的datatemplate xaml
<DataTemplate>
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Id}" Grid.Column="0" Height="auto" Width="auto" FontSize="50"/>
<TextBlock Text="{Binding Title}" Height="auto" Width="auto" FontSize="50" Grid.Column="2" TextWrapping="Wrap"/>
<Image Name="del" Source="/Assets/AppBar/delete.png" Grid.Column="4" Tap="delete_Tap" HorizontalAlignment="Stretch" Visibility="{Binding}"/>
</Grid>
<TextBlock Text="{Binding Data}" Height="auto" Width="auto" FontSize="30" TextWrapping="Wrap"/>
</StackPanel>
</DataTemplate>
这是可视树代码
private void ApplicationBarIconButton_Click(object sender, EventArgs e)
{
foreach (var items in notes.Items)
{
var x = notes.ItemContainerGenerator.ContainerFromItem(items);
var p = VisualTreeHelper.GetChildrenCount(x);
MessageBox.Show(p.ToString());
}
}
getchildrencount始终为1,即边框。如何从代码中访问图像?
答案 0 :(得分:0)
看看这个link。这描述了如何选择放置在ListBox项目中的控件。
(或)
更好的解决方案可能是: