WPF Combobox 问题请教
基于MVVM模式开发的,其中View中相关代码如下:
<TextBlock FontSize="14" Height="25" Name="textBlock2" Text="纸卷品种:" Width="76" />
<ComboBox Height="23" Name="comboBox1" Width="178" ItemsSource="{Binding Observablezjpz}" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedIndex="0" />
在对应的ViewModel中,相关代码如下:
private ObservableCollection<KeyValuePair<string, string>> _observablezjpz = null;
public ObservableCollection<KeyValuePair<string, string>> Observablezjpz
{
get
{
if (_observablezjpz == null)
{
_observablezjpz = GetObservable(paper.纸卷品种.ToString());
}
return _observablezjpz;
}
}
public ObservableCollection<KeyValuePair<string, string>> GetObservable(string _paperiftype)
{
int enumpaper = (int)Enum.Parse(typeof(paper), _paperiftype);
ObservableCollection<KeyValuePair<string, string>> _observableinfo;
_observableinfo = new ObservableCollection<KeyValuePair<string, string>>().PopulateFrom(
from tv in _paperDC.TotalViews
join dv in _paperDC.DetailViews on tv.tvid equals dv.tvid
where tv.tvid == enumpaper & dv.dvstatus == true
select new KeyValuePair<string, string>(dv.dvid.ToString(), dv.dvdisplay));
return _observableinfo;
}
问题是我怎么在ViewModel获取combobox中所选的Key和Value了,不是在View里面,谢谢。
<TextBlock FontSize="14" Height="25" Name="textBlock2" Text="纸卷品种:" Width="76" />
<ComboBox Height="23" Name="comboBox1" Width="178" ItemsSource="{Binding Observablezjpz}" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedIndex="0" />
在对应的ViewModel中,相关代码如下:
private ObservableCollection<KeyValuePair<string, string>> _observablezjpz = null;
public ObservableCollection<KeyValuePair<string, string>> Observablezjpz
{
get
{
if (_observablezjpz == null)
{
_observablezjpz = GetObservable(paper.纸卷品种.ToString());
}
return _observablezjpz;
}
}
public ObservableCollection<KeyValuePair<string, string>> GetObservable(string _paperiftype)
{
int enumpaper = (int)Enum.Parse(typeof(paper), _paperiftype);
ObservableCollection<KeyValuePair<string, string>> _observableinfo;
_observableinfo = new ObservableCollection<KeyValuePair<string, string>>().PopulateFrom(
from tv in _paperDC.TotalViews
join dv in _paperDC.DetailViews on tv.tvid equals dv.tvid
where tv.tvid == enumpaper & dv.dvstatus == true
select new KeyValuePair<string, string>(dv.dvid.ToString(), dv.dvdisplay));
return _observableinfo;
}
问题是我怎么在ViewModel获取combobox中所选的Key和Value了,不是在View里面,谢谢。
...全文
相关推荐
WPF DataGrid(问题求解)
WPF窗口程序 DataGrid控件自定义ComboBox VS2010 结果:ComboBox列显示空白,下拉列表可正常显示
WPF下DataGrid每行设置不同的ComboBox的数据绑定
WPF下DataGrid每行设置不同的ComboBox的数据绑定 DataGrid设置一次ItemSource 每个ComboBox也要设置一次ItemSource 有点像通过两次映射来绑定
解决combobox随窗口变化大小后不显示下拉列表问题
解决combobox随窗口变化大小后不显示下拉列表问题
wpf 下拉列表树状结构显示
下拉列表以树状结构显示,实用.NET的C# WPF语音结构进行编写,界面简洁,适用作为一个窗体中的下拉控件实用。
WPF ComboBox数据驱动解析[项目代码]
本文详细解析了WPF中ComboBox控件在数据驱动模式下可能遇到的SelectedItem与SelectedIndex不刷新问题。通过真实案例,文章揭示了数据绑定的核心原理,并提供了多种解决方案:包括使用SelectedValuePath、从ItemsSource中查找实际对象、重写Equals与GetHashCode方法,以及推荐使用SelectedIndex替代SelectedItem。文章还介绍了同步选中项与索引的最佳实践,并比较了不同属性的适用场景。最后,作者给出了根据实际需求选择绑定方式的建议,帮助开发者彻底理解ComboBox的数据驱动机制。


