C# WPF-组合框c选择不显示在活动窗口上
我在VS 2015 express环境中创建了一个WPF应用程序。现在我正在努力解决组合框的值表示问题。我的组合框如下所示:C# WPF-组合框c选择不显示在活动窗口上,c#,wpf,combobox,model-binding,C#,Wpf,Combobox,Model Binding,我在VS 2015 express环境中创建了一个WPF应用程序。现在我正在努力解决组合框的值表示问题。我的组合框如下所示: <ComboBox x:Name="cb_pers_ucz" ItemsSource="{Binding Path=Mechanizmy.GlobalObj.SLO_PER_UCZ}" DisplayMemberPath="nazwa" SelectedValuePath="id_poz" IsSynchroniz
<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"
/>
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>();
在我需要通过c#代码设置所选值之前,一切正常。当我使用SelectedIndex或SelectedValue属性时,组合框将ID值更改为selected,但窗口(GUI)上有空白值
我使用列表“SLO_peru_UCZ”来填充组合框。看起来是这样的:
<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"
/>
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>();
公共类slowniki
{
公共int id_poz{get;set;}
公共字符串nazwa{get;set;}
公共字符串definicja{get;set;}
公共日期时间dt_od{get;set;}
公共日期时间dt_do{get;set;}
}
公共静态列表SLO_PER_UCZ=新列表();
对于Combobox结构的质量很抱歉,但我试图实现在stackoverflow和其他门户上找到的几种解决方案(没有效果)。
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));
公共类GlobalObjClassName:INotifyPropertyChanged
{
//……等等……等等。。。
公共静态列表SLO_PER_UCZ=新列表();
私有整数_selectedpoz=-1;
公共int-selectedpoz
{
获取{return}
设置
{
如果(值!=\u选择EddPoz)
{
_选择edidpoz=值;
OnPropertyChanged();
}
}
}
公共事件属性更改事件处理程序属性更改;
受保护的void OnPropertyChanged([CallerMemberName]String propName=null)
=>PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(propName));
XAML:
不要使用
UpdateSourceTrigger=PropertyChanged
或Mode=TwoWay
,除非你知道它们的意思。添加你不懂的随机内容只会浪费你的时间,毫无用处。非常感谢你的回答。这不是对我问题的严格回答,但给了我足够的信息来解决问题
再次感谢:)
问候
塞巴斯蒂安