[WPF] Xaml で親要素のプロパティをバインディングする

 Xaml ではコントロールのプロパティなどに別のコントロールのプロパティをバンディングできます。名前のあるコントロールのプロパティを参照する際はその名前を利用する事ができますが、単純に親のプロパティを引き継ぎたい場合もあります。親コントロールのプロパティを参照する方法です。
 

■ 概要


 RelativeSourceMode=FindAncestoAncestorType に参照したい親コントロールの型を設定します。また参照したい親コントロールまでに間に親コントロールの型のコントロールがある場合、AncestorLevel を指定します。
 次の一つ目の Label の文字色は Red、二つ目も Red、三つ目は LightGreen になります。
 

■ コード


<Grid Background="Red">
    <Label Content="sample" Background="Blue" Foreground="{Binding Background,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid}}"/>
</Grid>

<Grid Background="LightGreen">
    <Grid Background="Red">
        <Label Content="sample" Background="Blue" Foreground="{Binding Background,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid,AncestorLevel=1}}"/>
    </Grid>
</Grid>

<Grid Background="LightGreen">
    <Grid Background="Red">
        <Label Content="sample" Background="Blue" Foreground="{Binding Background,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Grid,AncestorLevel=2}}"/>
    </Grid>
</Grid>
広告