如何在上下文菜单WP7中绑定数据

时间:2013-03-06 04:43:02

标签: windows-phone-7 xaml silverlight-toolkit

我有一个列表,其中有可见的日程表名称,日期和时间,但我希望在长按列表框中的特定项目时打开一个上下文菜单,其中只有特定的描述和日程表名称项目可见。

所以我在xaml中的代码是:首先在网格中有一个列表框,其中我已经在listbox.itemtemplate中绑定了scheduleList ansd的整个列表,并且在数据模板内部已将特定项绑定到文本块

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <ListBox x:Name="scheduleListbox" ItemsSource="{Binding scheduleList}" Hold="scheduleListbox_Hold" Tap="scheduleListbox_Tap" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Vertical" Height="150" Width="460">
                    <TextBlock x:Name="textBlock1" Text="{Binding ScheduleName}" Foreground="WhiteSmoke" FontSize="32"/>
                    <TextBlock x:Name="textBlock2" Text="{Binding ScheduleDate}" Foreground="Red" Margin="0,10,0,0"/>
                    <StackPanel Orientation="Horizontal" Height="70" Width="460" Hold="StackPanel_Hold">
                        <TextBlock x:Name="textBlock3" Text="{Binding StartTime}" Margin="0,5,0,0"/>
                        <TextBlock x:Name="textBlock4" Text="{Binding EndTime}" Margin="50,5,0,0"/>
                        <toolkit:ContextMenuService.ContextMenu>
                            <toolkit:ContextMenu x:Name="menuItem" VerticalOffset="100.0" IsZoomEnabled="True" >

                                <toolkit:MenuItem Header="Add to calender" ItemsSource="{Binding ScheduleName }"/>
                                <!--<toolkit:MenuItem Header="Description"  ItemsSource="{Binding Description}"/>-->

                            </toolkit:ContextMenu>
                        </toolkit:ContextMenuService.ContextMenu>
                    </StackPanel>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

请告诉我如何通过代码或xaml在上下文菜单中绑定描述和计划名称。

如何通过代码或通过xaml绑定上下文菜单中的数据?

1 个答案:

答案 0 :(得分:1)

我使用下面的代码创建了一个带有绑定的面包屑上下文菜单。您应该感兴趣的代码是工具箱:ContextMenu.ItemTemplate部分,您可以在其中指定绑定。请注意,您也可以像使用索引值一样绑定命令参数。

工具包:不需要ContextMenu.Template部分。我添加了这个以允许滚动项目,如果有超过适合屏幕的项目,也将菜单移动到屏幕的底部。

    <toolkit:ContextMenuService.ContextMenu>
        <toolkit:ContextMenu x:Name="breadCrumbContextMenu" ItemsSource="{Binding CloudViewModel.BreadCrumbMenuItems}" Opened="ContextMenu_Opened" Closed="Breadcrumb_ContextMenu_Closed">
            <toolkit:ContextMenu.Template>
                <ControlTemplate TargetType="toolkit:ContextMenu">
                    <Border Margin="0,700,0,0" BorderThickness="1" >
                        <ScrollViewer MaxHeight="700">
                            <ItemsPresenter/>
                        </ScrollViewer>
                    </Border>
                </ControlTemplate>
            </toolkit:ContextMenu.Template>
            <toolkit:ContextMenu.ItemTemplate>
                <DataTemplate>
                    <toolkit:MenuItem Click="breadcrumbMenuItem_Click" CommandParameter="{Binding Index}" Padding="0">
                        <toolkit:MenuItem.Header>
                            <StackPanel Orientation="Horizontal" Height="40">
                                <Image Source="{Binding Image}" Width="40" Height="40" />
                                <TextBlock Text="{Binding Text}" Margin="24,0,0,0" />
                            </StackPanel>
                        </toolkit:MenuItem.Header>
                    </toolkit:MenuItem>
                </DataTemplate>
            </toolkit:ContextMenu.ItemTemplate>
        </toolkit:ContextMenu>
    </toolkit:ContextMenuService.ContextMenu>