更新
经过一番调查,问题似乎是在Item源加载完成之前就发生了SelectedValue / SelectedItem。如果我在断点中等待几秒钟,它就像预期的那样工作。不知道怎么解决这个问题。
更新结束
我有一个使用WPF和MVVM的应用程序,并使用ComboBox。以下是ViewModel示例。我遇到的问题是,当我们离开页面并返回时,ComboBox未选择当前选定的值。
ViewModel
public class MyViewModel
{
private MyObject _selectedObject;
private Collection<Object2> _objects;
private IModel _model;
public MyViewModel(IModel model)
{
_model = model;
_objects = _model.GetObjects();
}
public Collection<MyObject> Objects
{
get
{
return _objects;
}
private set
{
_objects = value;
}
}
public MyObject SelectedObject
{
get
{
return _selectedObject;
}
set
{
_selectedObject = value;
}
}
}
为了举例说明,假设MyObject有两个属性(Text和Id)。我的ComboBox的XAML代码如下:
XAML
<ComboBox Name="MyComboBox" Height="23" Width="auto"
SelectedItem="{Binding Path=SelectedObject,Mode=TwoWay}"
ItemsSource="{Binding Objects}"
DisplayMemberPath="Text"
SelectedValuePath="Id">
无论我如何配置,当我回到页面并重新组装对象时,ComboBox都无法选择值。虽然通过属性中的get正确返回对象,但ComboBox无法选择值。我不确定这是否只是ComboBox和MVVM模式工作方式的问题。我们正在进行的文本框绑定是正确的。