我对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>window.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}"/>window.xaml.cs
combobox1.SelectedValuePath = "ValueString";
combobox1.DisplayMemberPath = "ValueString";
combobox1.ItemsSource = "Opcje_rodzaju";
combobox1.SelectedValue = k.Rodzaj_poj;发布于 2016-01-25 18:58:05
假设您的模型定义如下:
public class ComboBoxItemString
{
public string ValueString { get; set; }
}属性Rodzaj_poj是绑定到SelectedValue of comboBox的属性,它需要是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));
}
}https://stackoverflow.com/questions/34998911
复制相似问题