弹出窗口没有显示ItemTemplate内的按钮

时间:2014-06-19 17:57:07

标签: c# visual-studio-2013 winrt-xaml windows-applications

每当用户按下我创建的列表框中的按钮时,我都会尝试显示一个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内的按钮有关?

1 个答案:

答案 0 :(得分:1)

如果您在模板中有基于事件的对象,则需要使用ClickMode声明来触及其项目事件之外的内容,因此在您的实例中例如将ClickMode="Press"添加到您的按钮将允许它可以分离和处理自己的事件。

因为它坐在那里,你必须选择该按钮所在的项目才能处理它的点击。

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