组合框不显示选定值

本文关键字:显示 组合 | 更新日期: 2023-09-27 18:31:45

我对ComboBox有问题。当我尝试将其设置为显示数据库中的数据时,它不显示值。该ComboBox包含来自 app.xaml 中数组的项目。

这是代码:

app.xaml

    <Application.Resources>
        <x:Array x:Key="Opcje_rodzaju" Type="local:ComboBoxItemString">
            <local:ComboBoxItemString ValueString = "N2"/>
            <local:ComboBoxItemString ValueString = "N3"/>
            <local:ComboBoxItemString ValueString = "O3"/>
            <local:ComboBoxItemString ValueString = "O4"/>
            <local:ComboBoxItemString ValueString = "M2"/>
            <local:ComboBoxItemString ValueString = "M3"/>
            <local:ComboBoxItemString ValueString = "INNE"/>
        </x:Array>
        <x:Array x:Key="Opcje_tacho" Type="local:ComboBoxItemString">
            <local:ComboBoxItemString ValueString = "Analogowy"/>
            <local:ComboBoxItemString ValueString = "Cyfrowy"/>
        </x:Array>
        <x:Array x:Key="Opcje_kontroli" Type="local:ComboBoxItemString">
            <local:ComboBoxItemString ValueString = "Sprawdzono"/>
            <local:ComboBoxItemString ValueString = "Nie sprawdzono"/>
            <local:ComboBoxItemString ValueString = "Stwierdzono nieprawidłowości"/>
        </x:Array>
    </Application.Resources>

窗口.xaml

    <ComboBox Height="29" HorizontalAlignment="Left" Margin="343,154,0,0" VerticalAlignment="Top" Width="116" ItemsSource="{StaticResource Opcje_rodzaju}" Name="combobox1"
                                  DisplayMemberPath ="ValueString" 
                                  SelectedValuePath="ValueString"                                      
                                  SelectedValue="{Binding Rodzaj_poj, Mode=TwoWay}"/>

窗口.xaml.cs

    combobox1.SelectedValuePath = "ValueString";
    combobox1.DisplayMemberPath = "ValueString";
    combobox1.ItemsSource = "Opcje_rodzaju";
    combobox1.SelectedValue = k.Rodzaj_poj;

组合框不显示选定值

假设您的模型是这样定义的:

public class ComboBoxItemString
{
    public string ValueString { get; set; }
}

comboBox SelectedValue绑定的属性Rodzaj_poj需要是一个string而不是一个ComboBoxItemString对象

 private string _rodzaj_poj;
    public string Rodzaj_poj
    {
        get
        {
            return _rodzaj_poj  ;
        }
        set
        {
            if (_rodzaj_poj   == value)
            {
                return;
            }
            _rodzaj_poj   = value;
            OnPropertyChanged();
        }
    }   

最后你需要实现INotifyPropertyChanged接口,以便在Rodzaj_poj更改后,接口将被通知

public partial class MainWindow : Window, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        Rodzaj_poj = "N3";
    }
  //.. 
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        var handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}