组合框不显示选定值
本文关键字:显示 组合 | 更新日期: 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));
}
}