代码之家  ›  专栏  ›  技术社区  ›  RandomEngy

具有XAML中定义的选项的数据绑定WPF组合框?

  •  10
  • RandomEngy  · 技术社区  · 16 年前

    在我的viewmodel上,我有一个 int 属性,我希望将其公开,以便使用组合框进行编辑,并提供有限的选项集,如16、8、4和2。是否有方法在XAML中指定选项,同时仍将值绑定回viewmodel?我想这样做:

    <ComboBox SelectedValue="{Binding MyIntProperty}">
        <ComboBoxItem>16</ComboBoxItem>
        <ComboBoxItem>8</ComboBoxItem>
        <ComboBoxItem>4</ComboBoxItem>
        <ComboBoxItem>2</ComboBoxItem>
    </ComboBox>
    

    List<int>

    1 回复  |  直到 16 年前
        1
  •  13
  •   rmoore    16 年前

    您可以完全按照示例中的方式指定您的选择。要使其正常工作,您缺少的是SelectedValuePath属性。如果没有它,SelectedValue将与SelectedItem相同。通过在ComboBox中设置SelectedValuePath=“Content”,您可以指定SelectedValue绑定只绑定到SelectedItem的一部分,在本例中是您指定为每个ComboBoxItem中的内容的Int内容。

    这里有一个小的演示,它还将值绑定到一个文本框,您可以在其中设置该项,并通过SelectedValue绑定(反之亦然)查看它在组合框中的反映。

    <StackPanel>
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Set Value:" />
            <TextBox Text="{Binding MyIntProperty, UpdateSourceTrigger=PropertyChanged}" />
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="Select Value:" />
            <ComboBox SelectedValue="{Binding MyIntProperty}" SelectedValuePath="Content">
                <ComboBoxItem>2</ComboBoxItem>
                <ComboBoxItem>4</ComboBoxItem>
                <ComboBoxItem>6</ComboBoxItem>
                <ComboBoxItem>8</ComboBoxItem>
                <ComboBoxItem>16</ComboBoxItem>
            </ComboBox>
        </StackPanel>
    </StackPanel>