WPF ListView 插入Combox和TextBox取值和赋值

WPF ListView 插入Combox和TextBox取值和赋值,第1张

第一种方法

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.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11760317.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存