所以我试图改变一些XAML代码以添加一个上下文菜单,该菜单将改变一个值的小数位数。我的XAML有点弱,但我有点迷失。
我现在的代码是:
<MenuItem Header="{DynamicResource DecimalPlaces}" ItemsSource="{Binding MenuItems}">
<ExclusiveMenuItem:ExclusiveMenuItem Header="{DynamicResource oneDecimal}" IsCheckable="True" IsChecked="{Binding Path=DecimalPlaces}"/>
<ExclusiveMenuItem:ExclusiveMenuItem Header="{DynamicResource twoDecimal}" IsCheckable="True" IsChecked="{Binding Path=DecimalPlaces}"/>
</MenuItem>
这至少会使菜单出现,但问题是DecimalPlaces处理整数(我现在只把oneDecimal和twoDecimal作为占位符)并且我希望动态资源是一个int,最好是从一到十个。
所以我的问题是:如何将动态资源设置为整数而不是特定变量,是否有办法动态生成此菜单(而不是写入10个不同的条目),可能基于数组或其他内容?
很抱歉,如果这是一个非常简单的问题,就像我说的那样,我的XAML有点弱。非常感谢任何帮助。
答案 0 :(得分:1)
如果我理解你的问题,我认为动态资源不是你需要的。 DynamicResource是一个将在运行时解析的资源。这通常用于主题。
要确切地了解您要做的事情有点难以理解,但如果您只是希望标题显示一些文字,请设置它。
<MenuItem Header="{DynamicResource DecimalPlaces}" ItemsSource="{Binding MenuItems}">
<ExclusiveMenuItem:ExclusiveMenuItem Header="1" IsCheckable="True" IsChecked="{Binding Path=DecimalPlaces}"/>
<ExclusiveMenuItem:ExclusiveMenuItem Header="2" IsCheckable="True" IsChecked="{Binding Path=DecimalPlaces}"/>
<ExclusiveMenuItem:ExclusiveMenuItem Header="OneDecimal" IsCheckable="True" IsChecked="{Binding Path=DecimalPlaces}"/>
<ExclusiveMenuItem:ExclusiveMenuItem Header="TwoDecimal" IsCheckable="True" IsChecked="{Binding Path=DecimalPlaces}"/>
</MenuItem>
如果需要来自MenuItems的一些数据,请使用ItemTemplate或ItemContainerStyle。
<MenuItem Header="{DynamicResource DecimalPlaces}" ItemsSource="{Binding MenuItems}">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding SomeProperty}" />
<Setter Property="IsCheckable" Value="True" />
<Setter Property="IsChecked" Value="{Binding Path=DecimalPlaces}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>