每当用户按下我创建的列表框中的按钮时,我都会尝试显示一个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
事件,但Click和Flyout都没有被触发。这是否与ItemTemplate
内的按钮有关?
答案 0 :(得分:1)
如果您在模板中有基于事件的对象,则需要使用ClickMode声明来触及其项目事件之外的内容,因此在您的实例中例如将ClickMode="Press"
添加到您的按钮将允许它可以分离和处理自己的事件。
因为它坐在那里,你必须选择该按钮所在的项目才能处理它的点击。
不确定这是否是技术上最合理的解释,但概念是正确的,并且很高兴你得到了补救措施。干杯!