XAML中的动态绑定

时间:2014-02-13 11:57:50

标签: c# wpf xaml

所以我试图改变一些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有点弱。非常感谢任何帮助。

1 个答案:

答案 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>