アプリケーションで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);
}
}
Name
Cameraは、プロパティと。を持つ単純なクラスにすぎません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
アプリケーションの起動時に境界が実際に選択される場合、これはすべて問題にはなりません。これを達成する方法はありますか?