在ItemTemplate中注册区域

时间:2014-02-13 09:39:57

标签: wpf prism itemtemplate region

我正在用Prism编写WPF应用程序,我正在使用MVVM,

现在,我有一个使用Items Control的视图,我希望每个项目都具有一定的外观,并且可以选择为每个项目添加唯一的上下文菜单。 所以到目前为止看起来像这样:

<ItemsControl Grid.Column="1" ItemsSource="{Binding DeviceHolders}">
  <ItemsControl.ItemTemplate>
     <DataTemplate>
         <Grid>
            <Image Name="image" Source="{Binding ImageIndex, Converter={StaticResource ImageIndexToLargeImageBitmapSource}}" Margin="5" VerticalAlignment="Center" HorizontalAlignment="Center">
               <Image.ContextMenu>
                      <ContextMenu <--THIS AS A UNIQUE REGION WHICH THE REGION NAME WILL BE string.format("{0}-{1}", "DeviceHolderRegion", DeviceHolder.ID)-->/>
               </Image.ContextMenu>
            </Image>
         </Grid>
      </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

正如我在代码中所写,我希望上下文菜单注册为具有唯一名称的区域(对于每个设备持有者对象,我想根据其类型添加不同的上下文菜单)。

有办法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我不知道你可以使用ContextMenu作为一个地区 - 你每天都学到新东西!

无论如何,请尝试以下方法: -

<ContextMenu>
    <regions:RegionManager.RegionName>
        <MultiBinding StringFormat="{}{0}-{1}">
            <Binding Path="DeviceHolderRegion" />
            <Binding Path="DeviceHolder.ID" />
        </MultiBinding>
    </regions:RegionManager.RegionName>
</ContextMenu>

我没有尝试过运行它,但是VS XAML编辑器并没有抱怨语法,这是一个很有希望的开始。

相关问题