我想在绑定的项目资源列表中传递选定的值时将所选值设置为0。
如下所述,有一个名为Category的类:
public class Category
{
private long _CategoryID;
public long CategoryID
{
get
{
return _CategoryID;
}
set
{
_CategoryID = value;
}
}
private string _CategoryName;
public string CategoryName
{
get
{
return _CategoryName;
}
set
{
_CategoryName = value;
}
}
}
窗口内有一个窗口和一个组合框。组合框的定义如下:
<ComboBox Name="cbCagtegory" TabIndex="7" ItemsSource="{Binding CategoriesList}" SelectedValuePath="CategoryID" DisplayMemberPath="CategoryName" SelectedValue="{Binding Path=CategoryID}">
</ComboBox>
在这个窗口的后端,我准备了一个与combobox绑定的类别列表和一个用于设置组合框选择值的属性。
List<Category> CategoriesList= new List<Category>();
private long _CategoryID;
public long CategoryID
{
get
{
return _CategoryID;
}
set
{
_CategoryID = value;
RaisePropertyChanged("CategoryID");
}
}
现在让我们说,CategoriesList包含两个记录。
a. CategoryID=0, CategoryName='Category1'
b. CategoryID=1, CategoryName='Category2'
c. CategoryID=2, CategoryName='Category3'
问题
如果我将CategoryId属性值设置为5.组合框中没有选择任何内容。 此时我想将CategoryID = 0设置为选定值。 我想在XAML中实现这一目标。
到目前为止我尝试了什么。
1.Assigned FallBackValue=0 as below
<ComboBox Name="cbCagtegory" TabIndex="7" ItemsSource="{Binding CategoriesList}" SelectedValuePath="CategoryID" DisplayMemberPath="CategoryName" SelectedValue="{Binding Path=CategoryID,FallBackValue=0}">
</ComboBox>
2. Assigned TargetNullValue=0 as below
<ComboBox Name="cbCagtegory" TabIndex="7" ItemsSource="{Binding CategoriesList}" SelectedValuePath="CategoryID" DisplayMemberPath="CategoryName" SelectedValue="{Binding Path=CategoryID,TargetNullValue=0}">
</ComboBox>
结果
他们都没有奏效。在组合框中没有选择任何东西。
答案 0 :(得分:0)
我会这样做:
以这种方式更改xaml中的组合框
<ComboBox Name="cbCagtegory" TabIndex="7" ItemsSource="{Binding CategoriesList}" DisplayMemberPath="CategoryName" SelectedItem="{Binding Selection}">
</ComboBox>
添加此属性
private Category comboSelection;
public Category ComboSelection
{
get
{
return ComboSelection;
}
set
{
ComboSelection= value;
RaisePropertyChanged("ComboSelection");
}
}
像这样更改CategoryID
private long _CategoryID;
public long CategoryID
{
get
{
return _CategoryID;
}
set
{
_CategoryID = value;
if((int)CategoryID > CategoriesList.Count -1)
{ComboSelection= CategoriesList[0];}
else
{ComboSelection= CategoriesList[(int)CategoryID ];
_CategoryID = 0;}
RaisePropertyChanged("CategoryID");
}
}