在网上找到类似的代码:

XAML文件



<ComboBox Margin="-16,3,0,5" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Name="cboxLocationKeyword"
ItemsSource="{Binding LocationSource,Mode=OneWay}"
SelectedValuePath="ID"
DisplayMemberPath="Info"
SelectedItem="{Binding SelectLocation}" />


对应的ViewModel文件



public class LocationRoad
{
public int ID { set; get; }
public string Code { set; get; }
public string Info { set; get; }
}
//
/// 当ComboBox选中项更改时发生
///
private LocationRoad _selectLocation;
public LocationRoad SelectLocation
{
get
{
return this._selectLocation;
}
set
{
this._selectLocation = value;
if (this.PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("SelectLocation"));
}
}

private ObservableCollection _locationRoad = null;

public ObservableCollection LocationSource
{
get
{
if (this._locationRoad == null)
{
this._locationRoad = new ObservableCollection() {
new LocationRoad() { ID = 1, Code = "NGQ", Info = "南岗区" },
new LocationRoad() { ID = 2, Code = "DLQ", Info = "道里区" },
new LocationRoad() { ID = 3, Code = "DWQ", Info = "道外区" },
new LocationRoad() { ID = 4, Code = "PFQ", Info = "平房区" },
new LocationRoad() { ID = 5, Code = "XFQ", Info = "香坊区" },
};

}
return this._locationRoad;
}
set
{
this._locationRoad = value;
if (this.PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("LocationSource"));
}
}


如果要进行双向绑定或其他的绑定方式,只要更改上面binging块中的Mode方式就可以了。一般用不到吧?

 

我根据上面的代码,做了一点修改

<ComboBox Name="CbClientType" SelectedIndex="0" SelectedValuePath="Code" DisplayMemberPath="Descript"

SelectedItem="{Binding CbClientTypeSelectedItem}" MinWidth="70"></ComboBox>

对应的ViewModel代码



public CustomNodeItem _CbClientTypeSelectedItem;
public CustomNodeItem CbClientTypeSelectedItem
{
get { return _CbClientTypeSelectedItem; }
set
{
_CbClientTypeSelectedItem = value;
//if (SelectCallBack != null)
//{
// SelectCallBack(value);
//}
NotifyOfPropertyChange();
}
}

private List<CustomNodeItem> _CbClientType;
public List<CustomNodeItem> CbClientType
{
get { return _CbClientType; }
set
{
_CbClientType = value;
if (value != null && value.Count > 0 && CbClientTypeSelectedItem == null)
{
CbClientTypeSelectedItem = value.First();
}
NotifyOfPropertyChange();
}
}

//在按钮的事件中获取选择项
public void BtnTest()
{
string msg = CbClientTypeSelectedItem.Descript;
MessageBox.Show(msg);
}


 说明:这个应用在Caliburn.Micro中使用的