【问题标题】:SelectedValuePath and SelectedValue of multi-binded wpf combobox多绑定wpf组合框的SelectedValuePath和SelectedValue
【发布时间】:2013-12-11 10:18:02
【问题描述】:

我对 wpf 模板和绑定有点陌生,这就是为什么遇到以下问题:

假设我的应用程序中有以下对象。

XAML:

<ComboBox Name="ComboModel" Width="230" Height="25" Grid.Row="3" Grid.Column="1"         HorizontalAlignment="Left" IsEnabled="True" >
        <ComboBox.ItemTemplate>
                  <DataTemplate>
                    <TextBlock>
                     <TextBlock.Text>
                      <MultiBinding StringFormat="{}{0}, {1}: {2}-{3}">
                       <Binding Path="ModelName"/>
                       <Binding Path="ModelBody"/>
                       <Binding Path="ModelFromYear"/>
                       <Binding Path="ModelToYear"/>
                      </MultiBinding>
                     </TextBlock.Text>
                    </TextBlock>
                   </DataTemplate>
         </ComboBox.ItemTemplate>
    </ComboBox>

代码: Combobox 绑定到 ModelYearClass 对象列表。

public class ModelYearClass
{
    private string modelName;
    public string ModelName
    {
        get { return modelName; }
        set
        {
            modelName = value;
        }
    }
    private string modelMake;
    public string ModelMake
    {
        get { return modelMake; }
        set
        {
            modelMake = value;
        }
    }
    private string modelBody;
    public string ModelBody
    {
        get { return modelBody; }
        set
        {
            modelBody = value;
        }
    }
    private string modelYear;
    public string ModelYear
    {
        get { return modelYear; }
        set
        {
            modelYear = value;
        }
    }
    private int modelId;
    public int ModelId
    {
        get { return modelId; }
        set
        {
            modelId = value;
        }
    }
    private string modelFromYear;
    public string ModelFromYear
    {
        get { return modelFromYear; }
        set
        {
            modelFromYear = value;
        }
    }
    private string modelToYear;
    public string ModelToYear
    {
        get { return modelToYear; }
        set
        {
            modelToYear = value;
        }
    }
}
    ...
    List<ModelYearClass> ModelYearList;
    ...
    ComboModel.ItemsSource = ModelYearList;
    ComboModel.SelectedValuePath = "@ModelId";
    ComboModel.SelectedValue = 2;

一切都很好 - 组合框填充了我想要的内容,但我无法通过这些行分配我需要的值。

ComboModel.SelectedValuePath = "@ModelId";
ComboModel.SelectedValue = 2;

我认为对于带有 multibindig 的组合框可能以其他方式完成?

如何做到这一点?请帮帮我。

【问题讨论】:

    标签: c# wpf binding combobox


    【解决方案1】:

    只需从 "@ModelId" 中删除 @ 即可。

    ComboModel.SelectedValuePath = "ModelId";
    

    通常ComboBoxSelectedValuePath 属性永远不会改变。如果是这样,请考虑在 XAML 中设置它。

    <ComboBox SelectedValuePath="ModelId" ... >
    ...
    </ComboBox>
    

    【讨论】:

    • 我试过删除“@”但没有帮助,而且删除后我看不到组合中的项目值,尽管组合已填充。
    • 我发现只有当我执行 ComboModel.SelectedValue = 2; 时组合项值才会消失有点奇怪的行为..有什么想法吗?
    • @khurshed_nosirov 你确定有一个ModelYearClass 实例,而ModelId = 2 在该列表中?当您在ComboBox 上分配ItemsSource 时,ModelYearList.Count(m =&gt; m.ModelId == 2); 的值是多少?
    • 你完全正确!另外我的麻烦是因为 SelectionChanged="ComboModel_SelectionChanged_1" 这个事件把一切都弄得一团糟。我忘记将它包含在我的帖子中,但是它在我的代码中。谢谢大佬,不胜感激!
    猜你喜欢
    • 1970-01-01
    • 2021-10-11
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2012-06-05
    相关资源
    最近更新 更多