5 c# wpf children datatemplate menuitem
我正在使用 ObjectDataProvider 和 DataTemplate 来填充菜单栏中的 MenuItem。(WPF、C#/XAML)请参阅下面的 snipet。
结果:出现顶部菜单项,当我单击它时,环绕菜单项(带有绑定标题文本的菜单项)与指示子项存在的小箭头一起出现,但悬停或单击箭头不会显示子项,它们无法访问。
预期结果:子项可见且行为正常。
片段:
<ObjectDataProvider x:Key="Brokers" ObjectInstance="{x:Static brokers:BrokerManager.Instance}" MethodName="GetBrokers" IsAsynchronous="True" />
<DataTemplate x:Key="BrokerMenuItem" DataType="IBroker">
<MenuItem Header="{Binding Path=Name}">
<MenuItem Header="Connect" />
<MenuItem Header="Disconnect" />
</MenuItem>
</DataTemplate>
<MenuItem Header="Brokers" ItemsSource="{Binding Source={StaticResource Brokers}}" ItemTemplate="{DynamicResource BrokerMenuItem}"/>
Run Code Online (Sandbox Code Playgroud)
小智 1
经过一周多的搜索,我终于找到了如何使其正常工作。事实证明,数据模板对于动态菜单来说效果不太好。执行此操作的正确方法是使用 MenuItem 的 ItemContainerStyle 属性。(或者是 ItemStyleContainer?)
只需创建一个样式来覆盖标题并将其设置为您需要的任何内容。我他们重写了 ItemsSource 以包含我的孩子。但这里要小心,因为子级将继承样式,并且每个子级都有相同的子级并生成递归菜单。您需要覆盖子项的 ItemsSource 并将其设置为空 x:Array 或类似内容。
有几个博客描述了如何使用 ItemContainerStyle,请查看它们。
| 归档时间: |
|
| 查看次数: |
8602 次 |
| 最近记录: |