C# WPF-组合框c选择不显示在活动窗口上

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

我在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"
    />
    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
,除非你知道它们的意思。添加你不懂的随机内容只会浪费你的时间,毫无用处。

非常感谢你的回答。这不是对我问题的严格回答,但给了我足够的信息来解决问题

再次感谢:)

问候 塞巴斯蒂安