WPF Combobox - 要设置的对象名称以及值

时间:2014-07-01 09:06:51

标签: c# wpf combobox

早上好,

如果这是一个重复的问题我提前道歉,我不确定是什么问题,所以我不知道该搜索什么!

但是,我已将XAML中的Combobox设置为

  <ComboBox HorizontalAlignment="Left" 
    Width="120"
    Text="{Binding PV.Loc}"
    SelectedItem="{Binding PV.Loc, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
     <ComboBoxItem>.</ComboBoxItem>
     <ComboBoxItem Content="{Binding GetVer}"/>
  </ComboBox>

当我选择GetVer值(属性是一个字符串)时,我得到以下内容:

  

System.Windows.Controls.ComboBoxItem:GetVer值

但是,当我选择点时,它设置正确。

当然这很简单,我需要改变什么?

由于

3 个答案:

答案 0 :(得分:1)

您需要设置DisplayMemberPath属性

 <ComboBox HorizontalAlignment="Left" DisplayMemberPath="value"   />
 </ComboBox>

如果您要绑定数据,也不应使用<ComboBoxItem>.</ComboBoxItem>

答案 1 :(得分:0)

设置Combo的DisplayMemberPath属性。

答案 2 :(得分:0)

你在数据绑定时试试这个吗?你不需要ComboBoxItems ......

//model
class DummyModel{
    public int Id{get;set;}
    public string Value{get;set;}
}
//view-model
class DemoVM:INotifyPropertyChanged{
    private int selId;
    //you can build the list any way you want (even with hardcoded values...)
    public List<DummyModel> Items{get{return new List<DummyModel>();}}
    public int SelectedId{
        get{return selId;}
        set{
            if(selId==value)return;
            selId=value;
            RaisePropertyChanged("SelectedId");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void RaisePropertyChanged(string name){
        //raise event here
    }
}
//view
<ComboBox ItemsSource="{Binding Items}" 
    SelectedValue="{Binding SelectedId}"
    SelectedValuePath="Id" IsTextSearchEnabled="True" IsTextSearchCaseSensitive="False"
    IsEditable="True" TextSearch.TextPath="Value">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Value}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>