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里面有关?

ItemTemplate中按钮的弹出框没有显示

当你在模板中有一个基于事件的对象时,你需要通过ClickMode的声明到达它的项目事件之外,所以在你的实例中,例如添加ClickMode="Press"到你的按钮将允许它分离并处理自己的事件。

因为在它的位置,你必须选择按钮所在的项目,以便它的点击得到处理。

不确定这是否是技术上最合理的解释,但这个概念是正确的,很高兴你得到了补救。干杯!