【发布时间】:2012-08-26 03:54:08
【问题描述】:
我在我的应用程序中使用 WPF 功能区库并定义了一个这样的组合框:
<r:RibbonComboBox>
<r:RibbonGallery SelectedItem="{Binding ActiveCamera}">
<r:RibbonGalleryCategory ItemsSource="{Binding AvailableCameras}"/>
</r:RibbonGallery>
</r:RibbonComboBox>
绑定源定义在窗口的DataContext:
public Camera[] AvailableCameras
{
get ...
}
public Camera ActiveCamera
{
get { return _activeCamera; }
set
{
if (_activeCamera != value && value != null)
{
_activeCamera = value;
Notify("ActiveCamera");
'Some more logic that is not related to UI
}
Debug.WriteLine("Active camera set to " + value);
}
}
Camera 只是一个具有Name 和id 属性的简单类。
ActiveCamera 在 ViewModel 的构造函数中设置为 AvailableCameras 的第一项。我可以在代码中验证这一点。
但是,如果我启动应用程序,组合框是空的。启动应用程序后调试输出表明:
Active camera set to 713x BDA Analog Capture
如果我点击组合框,相机似乎被选中:
此外,添加了以下调试输出:
Active camera set to
如果我随后单击窗口中的其他位置,组合框将关闭并保持为空。添加了以下调试输出:
Active camera set to
但这种行为似乎并不一致。如果我单击组合框,然后再次单击窗口中的其他位置,则会选择第一个摄像头并添加以下调试输出:
Active camera set to (on click on the combobox)
Active camera set to 713x BDA Analog Capture
如果绑定SelectedItem 在应用程序启动时实际被选中,这一切都不是问题。有什么方法可以实现吗?
【问题讨论】:
-
你有没有想过这个问题?我注意到了同样的行为,这非常令人沮丧。我偶然发现这个问题正在寻找另一个问题,但我不会通过这个问题标题猜到问题。
-
@DBueno:我担心不会。我记不太清了,因为已经有一段时间了。但如果我找到解决方案,我会发布答案。
标签: .net wpf mvvm binding combobox