
DataTable dt = new DataTable()
dt.Columns.Add( "name" )
dt.Columns.Add( "value" )
DataRow dr = dt.NewRow()
dr[0] = "活动"
dr[1] = "1"
dt.Rows.Add(dr)DataRow dr1 = dt.NewRow()
dr1[0] = "生活"
dr1[1] = "2"
dt.Rows.Add(dr1)
this .comboBox1.DataSource = dt
this .comboBox1.DisplayMember = "name"
this .comboBox1.ValueMember = "value"
//调用方法:
//string _value = comboBox1.SelectedValue.ToString()
第二种:
//首先添加一个ComboBoxItem类
public class ComboBoxItem
{
private string _text = null
private object _value = null
public string Text
{ get {
return this ._text
} set {
this ._text = value
} }
public object Value
{ get {
return this ._value
} set {
this ._value = value
} }
public override string ToString()
{
return this ._text
} }
// 赋值方法
ComboBoxItem newitem = new ComboBoxItem()
newitem.Text = "男"
newitem.Value = "1"
ComboBoxItem newitem1 = new ComboBoxItem()
newitem1.Text = "女"
newitem1.Value = "0"
com_sex.Items.Add(newitem)
com_sex.Items.Add(newitem1)
// 调用方法:
ComboBoxItem sex_item = (ComboBoxItem)com_sex.SelectedItem
int com_sex_value = Convert.ToInt32(sex_item.Value)
string _Name = sex_item.Text
第三种:
//首先添加一个SetCls类
publicclassSetCls
{
privatestringID
privatestringNAME
publicSetCls( stringpid, stringpName)
{
this .ID =pid
this .NAME =pName
}
publicstringpID
{
get { returnID}
}
publicstringpName
{
get { returnNAME}
} }
// 赋值方法:(使用ArrayList 要先引用命名空间using System.Collections)
ArrayList lists = new ArrayList()
lists .Add( new SetCls ( "1" , "活动" ))
lists .Add( new SetCls ( "2" , "生活" ))
this .COMBOX.DisplayMember = "pID"
this .COMBOX.ValueMember = "pName"
this .COMBOX.DataSource = lists
// 调用方法:
string com_sex_value = COMBOX.SelectedValue.ToString()
我用DataSet填充的数据库中的内容(我这个是直接赋值,并不像上面三个添加值给ComBox)
DataSet ds_zubie = new DataSet()
da = new SqlDataAdapter(sql_zubie, PublicDB.DBzbw)
da.Fill(ds_zubie, "zubie" )
com_paidan.DataSource = ds_zubie.Tables[ "zubie" ].DefaultView//绑定数据源
com_paidan.ValueMember = "zubie_id" //赋值Value
com_paidan.DisplayMember = "zubie_name" //赋值显示名称
//调用方法:
string com_zubie_id = com_paidan.SelectedValue.ToString()
DataType.Name 是一个 String.ComboBoxItem 是一个 Control.
你的例子中, ComboBox 的 SelectedValue 的类型应该对应 ComboBoxItem, 而你企图强制指定它为一个 String, 显然不行.
概念不清 :(
试试这个:
在 根元素加入:
xmlns:sys="clr-namespace:Systemassembly=mscorlib"
然后重新写过 ComboBox:
<ComboBox SelectedValue="{Binding Path=DataType.Name, Mode=OneWay}">
<sys:String>String</sys:String>
<sys:String>Boolean</sys:String>
<sys:String>Byte[]</sys:String>
</ComboBox>
then, you got it.
----
补充说明一下, 我这个与你的 ComboBox 的不同之处:
我的示例中, ComboBox 的每个 Item 是 String. SelectedValue 就是一个 string, 只是这个 String 默认的由 ComboBoxItem 来承载.
你的示例中, ComboBox 的每个 Item 是 ComboBoxItem, 这个 ComboBoxItem 的Content 值是 String. SelectedValue 是一个 ComboBoxItem. (由於它是 ComboBoxItem, 所以 wpf 不会再用一个 ComboBoxItem 来承载它.)
直观一点就是:
<ComboBox x:Name="cb1" SelectedIndex="0">
<ComboBoxItem Content="String"/>
</ComboBox>
<ComboBox x:Name="cb2" SelectedIndex="0">
<sys:String>String</sys:String>
</ComboBox>
MessageBox.Show(cb1.SelectedValue.GetType().ToString())
MessageBox.Show(cb2.SelectedValue.GetType().ToString())
答案应该是:
System.Windows.Controls.ComboBoxItem 和
System.String
Hope help.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)