【发布时间】:2013-10-13 21:42:39
【问题描述】:
首先让我输入我的代码。
StockGroup EntityType
public partial class StockGroup
{
public StockGroup()
{
this.StockGroups = new HashSet<StockGroup>();
this.Stocks = new HashSet<Stock>();
}
public int ID { get; set; }
public string GroupName { get; set; }
public Nullable<int> ParentID { get; set; }
public Nullable<System.DateTime> CreatedOn { get; set; }
public Nullable<System.DateTime> ModifiedOn { get; set; }
public virtual ICollection<StockGroup> StockGroups { get; set; }
public virtual StockGroup Parent { get; set; }
public virtual ICollection<Stock> Stocks { get; set; }
public override string ToString() { return GroupName; }
public override bool Equals(object obj)
{
StockGroup stkGrp = obj as StockGroup;
if (stkGrp == null)
return false;
else
return ID.Equals(stkGrp.ID);
}
public override int GetHashCode()
{
return ID.GetHashCode();
}
}
ViewModel 中的一个属性,它使用 Caliburn.Micro 绑定到 ComboBox。
private IList<StockGroup> _groupParents;
public IList<StockGroup> GroupParents
{
get
{
return _groupParents;
}
set
{
_groupParents = value;
NotifyOfPropertyChange(() => GroupParents);
}
}
组合框 XAML
<ComboBox Name="GroupParents" ToolTip="group parents"
Margin="5,0,5,5"
IsSynchronizedWithCurrentItem="True"
core:Message.Attach="[Event GotFocus]=[LoadGroupParents]"
IsEditable="True"
DisplayMemberPath="GroupName"
SelectedValuePath="ID"
IsReadOnly="False">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
到这里为止一切都很好,组合框从数据库中获取所有数据。我在 ComboBox 中选择了第一条记录。 当我使用鼠标选择不同的组合框项目时,所选项目无法更改,它仍然在第一条记录中。 ComboBox 选择适用于 KeyDown 但不适用于 Mouse。
对于 SelectedItem,我有一个名为 SelectedGroupParent 的属性,当我通过鼠标更改时,它的值会发生变化,但它不会显示在 ComboBox TextBox 中。
请对此提出一些解决方案。我已经尝试了所有方法,但它不起作用。即使绑定到 CollectionView 也不起作用。
【问题讨论】:
-
视图模型上是否有一个包含
SelectedItem的属性? -
它将被 Caliburn.Micro 自动绑定。我有一个名为 SelectedGroupParent 的属性,当我通过鼠标更改时,它的值会发生变化,但它没有显示在 ComboBox TextBox 中。
-
那么你的问题是什么,你说
SelectedItem在视图模型中正在改变,但在你的问题中你说SelectedItem不能改变? -
感谢您的宝贵时间。
-
不客气,虽然我帮不上什么忙。
标签: c# wpf xaml combobox caliburn.micro