1

コレクションにバインドされたコンボボックスがあります。コレクション内の各アイテムには、アイテムを含む場合と含まない場合があるサブコレクションがあります。サブコレクションがバインドされている 2 番目のコンボボックスがあります。そして、サブコレクションにアイテムがある場合にのみ、2 番目のコンボボックスを表示 (=Visibility.Visible) したいと考えています。すべてが機能します。BUT: プログラムを開始すると、メイン コンボボックスの selectedItem が null になります (= これまでのところ何も選択されていません)。これにより(私は推測します)、コンバーターが呼び出されなくなります(そうではありません。コンバーターにブレークポイントを設定しましたが、プログラムは開始時に停止しません)。

そのため、プログラムの起動時に2番目のコンボボックスを表示したくないという問題があります。ValueConverter を強制的に呼び出すことはできますか? コンストラクターの最後で OnPropertyChanged を呼び出してみましたが、何も変わりません。また、.x​​aml.cs のコンストラクターでコンボボックスを Visible.Hidden に設定すると、値コンバーターが呼び出された後でも、まったく表示されません。何か案は?

4

1 に答える 1

4

FallbackValueバインディングにa を設定します。

<SomeUIElement Visibility="{Binding SomeBinding, Converter={StaticResource SomeConverter}, FallbackValue=Hidden}" />

何もバインドされていない場合は、バインドの代わりに使用される値を設定できます。

コード ビハインドの値を変更してVisibility.Hidden常に非表示のままにする理由は、プロパティを設定すると、XAML に追加したバインディングが明示的に削除されるためです。

于 2013-04-16T13:18:05.393 に答える