【问题标题】:Data Binding ComboBox数据绑定组合框
【发布时间】:2016-05-02 15:17:20
【问题描述】:

我有一个 Product 类,其中一些 properties 是由对数据库的 WCF async 调用设置的。我有两个textboxes 和一个combobox,我想将Product 对象绑定到这些controls。绑定textboxes 很简单而且有效,我唯一的问题是,我不知道如何将 SelectedItem 绑定到属性ProductTypeName

Product

public class Product
{
 public string Code{get;set;}
 public string Description{get;set;}
 public string ProductTypeName { get; set;}
}

textbox 的 XAML

<TextBox HorizontalAlignment="Left" 
         x:Name="txtDetails" 
         Text="{Binding Description}"/>

在后面的代码中,我只是创建了一个Product 的对象并将其绑定到DataContext。 textboxes 工作正常,但不知道如何为 ComboBox 做这件事

Product p = new Product();
product.Description = e.Result[0].Description;
product.Code = e.Result[0].Code;
product.ProductTypeName = e.Result[0].ProductTypeName
this.DataContext = p

现在,我希望根据p.ProductTypeName 设置combobox 的SelectedItem,但我不知道该怎么做。

注意:我的ComboBox 已填充并设置为0th index。如何根据p.ProductTypeName绑定?我想我只需要在我的 XAML 中进行更改。

<ComboBox Name="cboProductType" 
          DisplayMemberPath="ProductTypeName" 
          SelectedValuePath="ProductTypeID" 
          SelectedIndex="0"/>   

【问题讨论】:

    标签: c# xaml silverlight data-binding combobox


    【解决方案1】:

    只需添加到您的 XAML 代码中:SelectedItem = "{Binding ProductTypeName}"

    【讨论】:

    • 我做到了。但是SelectedIndex 仍然是0。我在ProductTypeName 中有"Fashion",它位于Index 7SelectedIndex 现在应该是 7 但没有变化
    • 啊。好的。您使用整数 0,1,... 预加载了 ComboBox,并且您想选择合适的项目?如果是这样,您的产品中应该有整数 ProductTypeId 属性,并且应该将 SelectedIndex 绑定到 ProductTypeId。
    • 不,我没有预加载整数。它预装了从DB 获取的ProductTypeIDProductTypeName。然后稍后我会获取一个特定的ProductTypeName,我希望SelectedIndex 移动到该项目而不是保持默认0th Index
    • 在这种情况下,您不应该将 ProductTypeID 绑定到 ComboBox SelectedValue,而是绑定 ProductTypeName:SelectedValuePath="ProductTypeName" SelectedItem="{Binding ProductTypeName}"
    猜你喜欢
    • 2012-01-24
    • 2017-11-16
    • 2013-04-23
    • 1970-01-01
    • 2015-12-12
    • 2017-11-09
    • 2014-02-03
    • 2011-08-25
    • 1970-01-01
    相关资源
    最近更新 更多