【发布时间】:2015-05-18 15:03:05
【问题描述】:
我有一个组合框被操纵为
<ComboBox x:Name="HeadComboBox"
ItemsSource="{Binding DataContext.HeadList, RelativeSource={RelativeSource FindAncestor,AncestorType= {x:Type views:FixedAssetBaseWholeUC}}}" Margin="195,78,86,0" VerticalAlignment="Top" SelectedItem="{Binding HeadItem}" DisplayMemberPath="Name" />
datacontext.HeadList 将指向:
public List<FixedAssetHeadItem> HeadList
{
get
{
return _headList;
}
set
{
if (_headList != value)
{
_headList = value;
RaisePropertyChanged("HeadList");
}
}
}
我禁用组合框所在的 UserControl 并加载另一个控件来编辑标题列表中的项目
DeleteFromHeadList(1);
FixedAssetBaseWholeViewModel fbwvm = (FixedAssetBaseWholeViewModel)Fabwuc.DataContext;
fbwvm.HeadList = HeadList;
当编辑完成后,重新启用用户控件只是为了发现选择消失。
调试显示 http://postimg.org/image/hdz4h4px3/
我该如何处理?
【问题讨论】:
-
当您选择的项目变为 null 或选择的索引为 -1 时,您可以检查 setter 属性,然后将其设置回第一个项目或第一个索引。您可以创建一个属性绑定到选定的索引并设置它。
-
在哪里可以找到所选项目的 setter 属性?
-
我使用
DeleteFromHeadList来检查并且从不删除已经链接到另一个对象的项目。所以我的选择绝不会变成空值。 -
如果这是定义属性的方式,那么
public dynamic HeadItem { get { return headItem;} **set { headItem = value; // This is setter in your view model }** }粗体是您的设置器