MenuItem.Header 和 MenuItem.Icon 数据模板
MenuItem.Header and MenuItem.Icon DataTemplate
我有一个包含以下两个菜单项的菜单:
<MenuItem Header="Item1">
<MenuItem.Icon>
<cc:Icon ImageSource="..." Size="22"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Item2">
<MenuItem.Icon>
<cc:Icon ImageSource="..." Size="22"/>
</MenuItem.Icon>
</MenuItem>
如您所见,每个项目都有一个名称 "Header" 和一个图标(我自己的控件)作为 "Icon"。
我不想在 XAML 中显式写入它们,而是想将 ItemsSource
绑定到我的 ViewModel 中的 List<MenuItem>
object,如下所示:
ItemsSource="{Binding Path=SomeMenu}"
我的 MenuItem
class 有字段 "String Name" 和 ImageSource Icon
我想绑定到 Header 和 Icon
部分我的菜单项完全我在这里是怎么做的。
我认为正确的方法是使用 DataTemplate
,像这样:
<Menu.ItemTemplate>
<DataTemplate>
<!-- TODO: Bind the Header and Icon properties-->
<TextBlock Text="{Binding Path=Name}"/>
<!-- how to bind the icon? -->
</DataTemplate>
<Menu.ItemTemplate>
但我不明白如何分别定义 Header 和 Icon
模板。
我该怎么做呢?
更新: 我希望 <cc:Icon>
出现在 menuItem 模板中任何有 <contentPresenter Source="Icon">
和 textBox
出现的地方有一个<contentPresenter Source="Header">
我相信这就是你想要的:
<Menu ItemsSource="{Binding SomeMenu}">
<Menu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Icon">
<Setter.Value>
<cc:Icon Source="{Binding Icon}"></Image>
</Setter.Value>
</Setter>
<Setter Property="Header" Value="{Binding Name}"/>
</Style>
</Menu.ItemContainerStyle>
</Menu>
还是我又惨败了? :)
我有一个包含以下两个菜单项的菜单:
<MenuItem Header="Item1">
<MenuItem.Icon>
<cc:Icon ImageSource="..." Size="22"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Item2">
<MenuItem.Icon>
<cc:Icon ImageSource="..." Size="22"/>
</MenuItem.Icon>
</MenuItem>
如您所见,每个项目都有一个名称 "Header" 和一个图标(我自己的控件)作为 "Icon"。
我不想在 XAML 中显式写入它们,而是想将 ItemsSource
绑定到我的 ViewModel 中的 List<MenuItem>
object,如下所示:
ItemsSource="{Binding Path=SomeMenu}"
我的 MenuItem
class 有字段 "String Name" 和 ImageSource Icon
我想绑定到 Header 和 Icon
部分我的菜单项完全我在这里是怎么做的。
我认为正确的方法是使用 DataTemplate
,像这样:
<Menu.ItemTemplate>
<DataTemplate>
<!-- TODO: Bind the Header and Icon properties-->
<TextBlock Text="{Binding Path=Name}"/>
<!-- how to bind the icon? -->
</DataTemplate>
<Menu.ItemTemplate>
但我不明白如何分别定义 Header 和 Icon
模板。
我该怎么做呢?
更新: 我希望 <cc:Icon>
出现在 menuItem 模板中任何有 <contentPresenter Source="Icon">
和 textBox
出现的地方有一个<contentPresenter Source="Header">
我相信这就是你想要的:
<Menu ItemsSource="{Binding SomeMenu}">
<Menu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Icon">
<Setter.Value>
<cc:Icon Source="{Binding Icon}"></Image>
</Setter.Value>
</Setter>
<Setter Property="Header" Value="{Binding Name}"/>
</Style>
</Menu.ItemContainerStyle>
</Menu>
还是我又惨败了? :)