C# 未选择具有数据模板值的组合框
当我选择一个元素时,我有一个带有DataTemplate的组合框,所选元素的名称显示为Selected。我该怎么做才能使所选元素的名称显示在Selection中,如打开的组合框所示 组合框的XAML:C# 未选择具有数据模板值的组合框,c#,wpf,combobox,datatemplate,C#,Wpf,Combobox,Datatemplate,当我选择一个元素时,我有一个带有DataTemplate的组合框,所选元素的名称显示为Selected。我该怎么做才能使所选元素的名称显示在Selection中,如打开的组合框所示 组合框的XAML: <ComboBox ItemsSource="{Binding}" Margin="51,146,238,146" BorderThickness="0" HorizontalAlignme
<ComboBox
ItemsSource="{Binding}"
Margin="51,146,238,146"
BorderThickness="0"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
Padding="3" Height="20" IsEditable="True"
SelectedValuePath="Name"
x:Name="testCombobox" SelectionChanged="testCombobox_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBox
Text="{Binding Path=Name}"
Padding="1,1,1,1"
AcceptsReturn="True"
Background="Yellow">
</TextBox>
</DataTemplate>
</ComboBox.ItemTemplate>
你可能会遇到两个问题;First ItemsSource=“{Binding}”无法获取所需的数据源。另一个错误是,冰顶路应该是公共财产,所以 ObservableCollection personen=新的ObservableCollection()强> 应更改为如下属性:
public ObservableCollection<Person> Person
{
get
{
return person;
}
set
{
person=value;
OnPropertyChange("Personen")
}
}
private ObservableCollection<Person> personen = new ObservableCollection<Person>()
公众可观察收集人
{
得到
{
返回人;
}
设置
{
人=价值;
关于财产变更(“个人”)
}
}
私有ObservableCollection personen=新ObservableCollection()
您应该查看DisplayMemberPath和SelectedValuePath之间的差异。
public class Person : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, e);
}
private string _Name;
private int _Alter;
public Person(string name, int alter)
{
Name = name;
Alter = alter;
}
public int Alter
{
get { return _Alter; }
set
{
_Alter = value;
OnPropertyChanged(new PropertyChangedEventArgs("Alter"));
}
}
public string Name
{
get { return _Name; }
set
{
_Name = value;
OnPropertyChanged(new PropertyChangedEventArgs("Name"));
}
}
}
public ObservableCollection<Person> Person
{
get
{
return person;
}
set
{
person=value;
OnPropertyChange("Personen")
}
}
private ObservableCollection<Person> personen = new ObservableCollection<Person>()