我有一个看起来像这样的菜单:
<MenuItem x:Name="menu" ItemsSource="{Binding Items}" Style="{StaticResource ItemStyle}">
<MenuItem.Header>
...
</MenuItem.Header>
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="PropertyNameOne" Value="{Binding}"/>
<Setter Property="PropertyNameTwo" Value="{Binding}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
Items
是NotifyingCollection
。但是,当Items
列表为空时,我想显示一条消息,例如“菜单中没有项目”,而不是当前行为,这是一个很小的空盒子。有没有办法在XAML中做到这一点?
答案 0 :(得分:0)
您可以使用DataTrigger设置ItemContainerStyle:
<MenuItem x:Name="menu">
<MenuItem.Header>
...
</MenuItem.Header>
<MenuItem.Style>
<Style TargetType="{x:Type MenuItem} BasedOn="{StaticResource ItemStyle}">
<Setter Property="ItemsSource" Value="{Binding Items}">
<Setter Property="MenuItem.ItemContainerStyle">
<Setter.Value>
<MenuItem.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="PropertyNameOne" Value="{Binding}"/>
<Setter Property="PropertyNameTwo" Value="{Binding}"/>
</Style>
</MenuItem.ItemContainerStyle>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Items.Count}">
... Alternate Content ItemsSource and ttemContainerStyle
</DataTrigger>
</Style.Triggers>
...
无论如何,这是一般性的想法,我相信你可以根据自己的特殊需求填写细节。 (即使用占位符文本定义禁用的子MenuItem)