【发布时间】:2011-08-23 20:09:54
【问题描述】:
我有一个ComboBox,它的ItemSource 和SelectedItem 属性绑定到一个视图模型。我有以下代码块,它是针对DomainContext 的数据查询的回调:
/// <summary>
/// Stores (readonly) - Stores available for ship to store.
/// </summary>
public ObservableCollection<StoreEntity> Stores
{
get { return _stores; }
private set { _stores = value; RaisePropertyChanged("Stores"); }
}
/// <summary>
/// SelectedStore - Currently selected store.
/// </summary>
public StoreEntity SelectedStore
{
get { return _selectedStore; }
set { _selectedStore = value; RaisePropertyChanged("SelectedStore"); }
}
/// <summary>
/// When stores are completely loaded.
/// </summary>
/// <param name="a_loadOperations"></param>
protected void OnStoresLoaded(LoadOperation<StoreEntity> a_loadOperations)
{
Stores.AddRange(a_loadOperations.Entities);
SelectedStore = a_loadOperations.Entities.FirstOrDefault();
}
在此示例中,Stores 是 ObservableCollection<StoreEntity>(AddRange 是一种扩展方法)并绑定到 ItemSource,SelectedStore 是 StoreEntity 并绑定到 SelectedItem。
这里的问题是ComboBox 没有改变它的选择来反映SelectedItem 的变化。
编辑:
我什至尝试过以下方法,尽管我认为 a_loadOperation.Entities 已经是一个已实现的集合:
/// <summary>
/// When stores are completely loaded.
/// </summary>
/// <param name="a_loadOperations"></param>
protected void OnStoresLoaded(LoadOperation<StoreEntity> a_loadOperations)
{
var entities = a_loadOperations.Entities.ToArray();
Stores.AddRange(entities);
SelectedStore = entities.First();
}
谢谢
【问题讨论】:
-
看来一切都设置正确了。你能告诉我们你设置绑定的 xaml 部分吗?
-
你是不是把绑定模式设置为双向
-
在我们的解释中,您将其称为 SelectedItem,但该属性称为 SelectedStore - 仔细检查您的 xaml 以查看是否存在这种情况。
-
啊!我发现了我的问题。我将
SelectedItem绑定到Stores。 -
@EtherDragon,
SelectedItem是ComboBox上的属性,SelectedStore是绑定到SelectedItem的视图模型中的属性。
标签: silverlight data-binding combobox