我在VS 2015 express环境中创建了一个WPF应用程序。现在我正在努力解决组合框值问题。我的组合框看起来像这样:
<ComboBox
x:Name="cb_pers_ucz"
ItemsSource="{Binding Path=Mechanizmy.GlobalObj.SLO_PER_UCZ}"
DisplayMemberPath="nazwa"
SelectedValuePath="id_poz"
IsSynchronizedWithCurrentItem="True"
SelectedValue="{Binding Mechanizmy.GlobalObj.SLO_PER_UCZ, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
ToolTip=""
HorizontalAlignment="Left"
Margin="175,127,0,0"
VerticalAlignment="Top"
Width="185"
Height="22"
Grid.Row="1"
ToolTipOpening="cb_pers_ucz_ToolTipOpening"
/>
一切正常,直到我需要通过c#代码设置选定的值。当我使用SelectedIndex或SelectedValue属性时,组合框将ID值更改为选中但窗口(GUI)上有空白值。
我正在使用List&#34; SLO_PER_UCZ&#34;填充组合框。它看起来像是:
public class slowniki
{
public int id_poz { get; set; }
public string nazwa { get; set; }
public string definicja { get; set; }
public DateTime dt_od { get; set; }
public DateTime dt_do { get; set; }
}
public static List<slowniki> SLO_PER_UCZ = new List<slowniki>();
很抱歉Combobox结构的质量,但我试图实现我在stackoverflow和其他门户网站上找到的几个解决方案(没有任何效果)。
答案 0 :(得分:0)
Mechanizmy.GlobalObj.SLO_PER_UCZ
是该集合。它也不是所选的值。将SelectedValue
绑定到将采用所选值的其他属性。
由于您也想设置它,我还会向您展示如何在您的viewmodel上实现INotifyPropertyChanged
。
public class GlobalObjClassName : INotifyPropertyChanged
{
// ... etc. etc. etc. ...
public static List<slowniki> SLO_PER_UCZ = new List<slowniki>();
private int _selectedIDPoz = -1;
public int SelectedIDPoz
{
get { return _selectedIDPoz; }
set
{
if (value != _selectedIDPoz)
{
_selectedIDPoz = value;
OnPropertyChanged();
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([CallerMemberName] String propName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
XAML:
<ComboBox
x:Name="cb_pers_ucz"
ItemsSource="{Binding Path=Mechanizmy.GlobalObj.SLO_PER_UCZ}"
DisplayMemberPath="nazwa"
SelectedValuePath="id_poz"
IsSynchronizedWithCurrentItem="True"
SelectedValue="{Binding Mechanizmy.GlobalObj.SelectedIDPoz}"
ToolTip=""
HorizontalAlignment="Left"
Margin="175,127,0,0"
VerticalAlignment="Top"
Width="185"
Height="22"
Grid.Row="1"
ToolTipOpening="cb_pers_ucz_ToolTipOpening"
/>
不要使用UpdateSourceTrigger=PropertyChanged
或Mode=TwoWay
,直到找出它们的含义。添加你不了解的随机内容会浪费你的时间,让你无处可去。
答案 1 :(得分:0)
非常感谢您的回答。这不是我的问题的答案,但给了我足够的信息来解决问题。
再次感谢:)
亲切的问候 塞巴斯蒂安