0

ItemsPanel StaticResourceで定義されたListBoxItemsデザインのListBox(監視可能なコレクションにバインド)があります。ItemsPanelはApp.xmlで定義されています(私のものを中央に配置し、ListBoxItemのデザインをさまざまなページで使用するように)リストボックスごとに異なるContextMenuを用意する必要があります。動作しないでください...

私のApp.xaml(小さなデモ-ここでトピックを肥大化させたくありませんでした):

<Application.Resources>
    <DataTemplate x:Key="ListItemTemplate">
        <TextBlock Text="{Binding Title}" />
    </DataTemplate>
</Application.Resources>

MainPage.xamlで、リストボックスを定義しました。:

<ListBox ItemsSource="{Binding Items}" 
         ItemTemplate="{StaticResource ListItemTemplate}">

    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="toolkit:ContextMenuService.ContextMenu">
                <Setter.Value>
                    <toolkit:ContextMenu>
                        <toolkit:MenuItem Header="Test" />
                    </toolkit:ContextMenu>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

ただし、ListBoxItemを長押ししても、何も起こりません。エラーはありません-何もありません-しかし、コンテキストメニューが表示されません...(エミュレーターでもデバイスでも)。

LayoutRootグリッドなどにContextMenuを追加すると、チャームのように機能します。

4

1 に答える 1

1

ListItemTemplateにContextMenuを入れてみてください

<Application.Resources>
<DataTemplate x:Key="ListItemTemplate">
    <StackPanel>
        <toolkit:ContextMenuService.ContextMenu>
            <toolkit:ContextMenu>
                <toolkit:MenuItem x:Name="DoneMenuItem" 
                    Header="Done"
                    Command="{Binding Main.DoneCommand, Source={StaticResource Locator}}"
                    CommandParameter="{Binding}"/>
            </toolkit:ContextMenu>
        </toolkit:ContextMenuService.ContextMenu>
        <TextBlock Text="{Binding Title}" />
    </StackPanel>
</DataTemplate>

また、ListBox.ItemContainerStyleタグを削除できます

于 2013-02-16T19:36:22.820 に答える