2017-11-24 3 views
0

私はいくつかのシャイなComboBoxを実装しようとしています。 Base Visibilityプロパティを傍受し、Itemsリストが空の場合は自己を表示できません。目標は、スマートなデータグリッドヘッダフィルタ要素を作成することです。Shyコントロールを実装するVisibilityプロパティをオーバーライドします。

コールバックを強制的に使用して傍受しようとしましたが、これらのコールバックは静的でアイテムにアクセスできません。

答えて

1

実際には、強制通貨のコールバックを無効にする必要があります。これは、次のシグネチャがあります。

public delegate object CoerceValueCallback(
    DependencyObject d, 
    object baseValue) 

最初のパラメータdは実際にあなたのComboBoxインスタンスであるので、あなたは Itemsプロパティにアクセスすることができます。

private static object CoerceVisibility(DependencyObject d, object baseValue) 
{ 
    var comboBox = (ComboBox)d; 
    return comboBox.HasItems ? baseValue : Visibility.Collapsed; 
} 

また、Itemsコレクションの変化に登録する必要があります(またはHasItemsプロパティ)を呼び出してCoerceValue(VisibilityProperty)

+0

とお寄せいただきありがとうございます。私はとても盲目だった... –

関連する問題