我在列表中有一个组合框,其中组合框的项目是动态的。它们将在所选项目的帮助下确定。
例如:如果选择的项目是Item1,那么组合框应包含Item1,Item2,Item3,但如果选择的项目是Item2,则组合框应包含Item2,Item3,Item4
如何通过使用绑定来实现相同的目标..
现在我在我的集合中设置两个名为SelectedValue和ListValues的属性,并将它们与我的组合框绑定,但它只选择列表中的第一项,并将其余项保留原样。
此外,数据绑定的执行顺序是什么,因为我想首先调用Itemsource然后设置selectedvalue,以便选择项目。
非常感谢任何帮助。
这是我努力的结果,但我不确定它是否正确。
C#
public string SelectedValue
{
get
{
PropertyChanged.Invoke(this, new System.ComponentModel.PropertyChangedEventArgs("Values"));
return _value;
}
set
{
if (value != null) //It will be null when binding of values happens
{
_value = value;
PropertyChanged.Invoke(this, new System.ComponentModel.PropertyChangedEventArgs("Values"));
PropertyChanged.Invoke(this, new System.ComponentModel.PropertyChangedEventArgs("SelectedValue"));
}
}
}
public IList<SomeType> Values
{
get
{
string status =_status;
return SomeFunctionToReturnValues(status);
}
}
XAML
<ComboBox SelectedValue="{Binding SelectedValue}" SelectedValuePath="Id" DisplayMemberPath="Text" Width="120" ItemsSource="{Binding Values,Mode=OneWay}"></ComboBox>
如果有人能在这里提供更好的建议,请发表评论并告诉我。
答案 0 :(得分:1)
您使用ItemsSource属性
<ComboBox SelectedItem="{Binding MyNum}" ItemsSource="{Binding Numbers}" Width="100" Height="30"/>
这必然会:
// Fills up combo box
public IEnumerable<int> Numbers
{
get
{
IEnumerable<int> temp = MyCollection.ToList();
return temp.SubArray(MyNum,MyCollection.count);
}
}
private int _myNum
public int MyNum
{
get
{
return _myNum;
}
set
{
_myNum = value;
OnPropertyChanged("MyNum");
}
}
当SubArray是(Credit)
时public static T[] SubArray<T>(this T[] data, int index, int length)
{
T[] result = new T[length];
Array.Copy(data, index, result, 0, length);
return result;
}