我在我的应用程序中使用 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
.
在 ViewModel的ActiveCamera
构造函数中设置为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
如果在应用程序启动时实际选择了边界,这一切都不是问题。有没有办法做到这一点?