ItemTemplate中按钮的弹出框没有显示
本文关键字:显示 按钮 ItemTemplate | 更新日期: 2023-09-27 18:09:18
我试图显示一个Flyout每当用户按下一个按钮内的列表框,我已经创建。以下是用于加载绑定项源并附加弹出框的代码。
<myControls:myListbox ItemsSource="{Binding MyList}">
<myControls:myListbox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="70" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=MyField}"></TextBlock>
<Button Loaded="DeleteButton_OnLoaded" Click="OnDeleteConfirmationClick" Flyout="{StaticResource MyFlyout}" Grid.Column ="1""></Button>
</Grid>
</DataTemplate>
</myControls:myListbox.ItemTemplate>
</myControls:myListbox>
下面是弹出静态资源的代码。
<Page.Resources>
<Flyout x:Key="MyFlyout">
<StackPanel>
<TextBlock>Some confirmation message</TextBlock>
<Button></Button>
</StackPanel>
</Flyout>
</Page.Resources>
我正在接收每个按钮的OnLoaded
事件,但是单击和弹出都没有被触发。这是否与按钮在ItemTemplate
里面有关?
当你在模板中有一个基于事件的对象时,你需要通过ClickMode的声明到达它的项目事件之外,所以在你的实例中,例如添加ClickMode="Press"
到你的按钮将允许它分离并处理自己的事件。
因为在它的位置,你必须选择按钮所在的项目,以便它的点击得到处理。
不确定这是否是技术上最合理的解释,但这个概念是正确的,很高兴你得到了补救。干杯!