与 ItemsControl 一起使用时,Combobox Selected Items 未正确绑定
Combobox Selected Items not binding correctly when using it with ItemsControl
我需要将所选项目绑定到 属性,但不知何故它不起作用。
这是我的尝试:
<ItemsControl ItemsSource="{Binding MyItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Label Content="{Binding FirstProperty}"/>
<ComboBox ItemsSource="{Binding SecondProperties}" SelectedItem="{Binding SelectedProperty}" />
...
这是执行此操作的模型:
private List<MyItems> _myItems;
public List<MyItem> MyItems{
get => _myItems;
set
{
_myItems= value;
OnPropertyChanged();
}
}
这是我的 class:
public class MyProperty
{
public List<string> SecondProperties{ get; set; }
public string FirstProperty;
public string SelectedProperty;
}
我希望 SelectedProperty
与我选择的相匹配。当我以后使用它时,FirstProperty
可以,组合框列表 SecondProperties
也可以,但是 SelectedProperty
总是 null
.
有什么帮助吗?
SelectedProperty 必须定义为 public 属性:
public string SelectedProperty { get; set; }
这是一个 public 字段:
public string SelectedProperty;
我修复了你的代码:
public class MyProperty : INotifyPropertyChanged
{
private string selectedProperty;
public string SelectedProperty
{
get
{
return selectedProperty;
}
set
{
selectedProperty = value;
OnPropertyChanged("SelectedProperty");}
}
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
在您的 xaml
中添加 Mode=TwoWay
<ComboBox ItemsSource="{Binding SecondProperties}" SelectedItem="{Binding SelectedProperty, Mode=TwoWay }" />
我需要将所选项目绑定到 属性,但不知何故它不起作用。
这是我的尝试:
<ItemsControl ItemsSource="{Binding MyItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Label Content="{Binding FirstProperty}"/>
<ComboBox ItemsSource="{Binding SecondProperties}" SelectedItem="{Binding SelectedProperty}" />
...
这是执行此操作的模型:
private List<MyItems> _myItems;
public List<MyItem> MyItems{
get => _myItems;
set
{
_myItems= value;
OnPropertyChanged();
}
}
这是我的 class:
public class MyProperty
{
public List<string> SecondProperties{ get; set; }
public string FirstProperty;
public string SelectedProperty;
}
我希望 SelectedProperty
与我选择的相匹配。当我以后使用它时,FirstProperty
可以,组合框列表 SecondProperties
也可以,但是 SelectedProperty
总是 null
.
有什么帮助吗?
SelectedProperty 必须定义为 public 属性:
public string SelectedProperty { get; set; }
这是一个 public 字段:
public string SelectedProperty;
我修复了你的代码:
public class MyProperty : INotifyPropertyChanged
{
private string selectedProperty;
public string SelectedProperty
{
get
{
return selectedProperty;
}
set
{
selectedProperty = value;
OnPropertyChanged("SelectedProperty");}
}
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
在您的 xaml
中添加 Mode=TwoWay<ComboBox ItemsSource="{Binding SecondProperties}" SelectedItem="{Binding SelectedProperty, Mode=TwoWay }" />