2012-03-23 13 views
0

コントロールの周りのすべてのスタイリング情報と、ネストされたコントロールテンプレートと、トリガーを使用して、次のことを調べようとしています。コンボボックスコントロールを使用したマルチバインディングコンバータパラメータの適切なパスの参照

コンボボックスコントロールを使用します。トグルボタンコンポーネント用のコントロールテンプレートがあり、標準の表示(ドロップダウンモードではない)で表示値を表示し、トグルボタンでドロップダウンをアクティブにします。

<ControlTemplate TargetType="ToggleButton" x:Key="baseComboBoxToggleButton" > 
    <!-- overall border covering left side display value and the actual toggle button --> 
    <Border x:Name="Border" Grid.ColumnSpan="2" /> 

    <!-- area in left side (column=0) that shows the DISPLAY value --> 
    <Border x:Name="ShowDisplayValueArea" Grid.Column="0" /> 

    <!-- second column using a path to draw the glyph down arrow --> 
    <Path Grid.Column="1" /> 

    <Triggers for the toggle button ... /> 
</ControlTemplate> 

その後、あなたはそう

<ControlTemplate TargetType="ComboBox" x:Key="ComboBoxGridControlTemplate" > 
    <Grid> 
     <ToggleButton Name="ToggleButton" 
        Template="{StaticResource baseComboBoxToggleButton}" 
        ... /> 
    </Grid> 
</ControlTemplate> 

上記のトグルボタンのテンプレートを使用するメインComboBoxコントロールを持って、私は最終的に基づく「ShowDisplayValueArea」の背景色を変更しようとしていますマルチバインディングコンバータの結果私のようなトグルボタンコントロールテンプレート領域における多コンバータを配置する場合..

<MultiBinding Converter="{StaticResource myMultiParmConverter}"> 
    <Binding Path="." RelativeSource="{RelativeSource Self}" /> 
</MultiBinding> 

最初の「値」の値で配列が正しくトグルボタンコントロールテンプレートのインスタンスを通過しているオブジェクト。名前だけでなくオブジェクト全体の参照。 (すなわち:トグルボタンの親)

public object Convert(object[] values, 
         Type targetType, 
         object parameter, 
         CultureInfo culture) 

だから、私はバインドパラメータを伝える方法トグルボタンがどこから来た実際のコンボボックスを渡すので、私は、パラメータとして渡された実際の全体ComboBoxコントロールを取得します。私のコンバータクラスのデバッガでは、私はデバッガウィンドウ内のオブジェクトの参照を見ていたが

答えて

0

は...完全に偶然...

をそれを見つけました。それから、それが対象だったので、私は "値"列の右側にある虫めがねをクリックしました。そうすることで、 "WPF Visualizer"(以前は使われていない/見たことがない)が生まれました。その視点から見ると、「TemplatedParent」が実際には私が望むオブジェクトであることがわかりました。私は他の時代と一緒に遊ぶことができる他の特性も明らかにありましたが、TemplatedParentは私が望むものでした。

だから、私は

<Binding Path=".TemplatedParent" RelativeSource="{RelativeSource Self}" /> 

<Binding Path="." RelativeSource="{RelativeSource Self}" /> 

からバインディングを変更し、正しく私のコンバーターへの引数として渡された実際のComboBoxコントロールを得ました。ここでは、コンボボックスの任意の/すべてのプロパティを、コンバーター内で直接使用することができます。

関連する問題