FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

RelativeSourceによるバインディング

 RelativeSourceを使用することで、自分自身や自分の上位要素とバインディングすることができます。
<Window x:Class="RelativeSourceBinding.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="150" Width="225">
    
    <StackPanel>
        <!--自分自身のプロパティを参照する-->
        <TextBlock Background="Red" Margin="5"
                   Text="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Background}"/>
        
        <!--親(Border)のプロパティを参照する-->
        <Border BorderBrush="Blue" BorderThickness="2" Margin="5">
            <TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=BorderBrush}"/>
        </Border>
        
        <!--AncestorLevelで親の位置を指定する-->
        <Border BorderBrush="Blue" BorderThickness="2" Margin="5">
            <Border BorderBrush="Red" BorderThickness="2">
                <TextBlock Text="テキスト"
                           Foreground="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}, AncestorLevel=2}, Path=BorderBrush}"/>
            </Border>
        </Border>
    </StackPanel>
</Window>
 これを実行すると、以下のようなウインドウが表示されます。
RelativeSource.png
 8~9行目のコードは、自分自身のプロパティとバインドする際の例です。
 自分自身にバインディングする場合はRelativeSourceのModeをSelfにします。そして、Pathでバインディングするプロパティを指定します。(ここは通常のバインディングと同じです)

 12~14行目、17~21行目のコードは、自分の上位要素とバインディングする際の例です。
 上位要素とバインディングする場合はAncestorTypeでバインディングする対象の型を指定します。この例の場合はBorderをターゲットにしています。
 さらにAncestorLevelでバインドする上位要素の位置を指定できます。AncestorLevelを指定しない場合は最初に見つかった上位要素とバインドします。(AncestorLevel=1と同じです)
 AncestorLevelは自分に近い方から1, 2,…とインデックスが付けられます。AncestorLevel=1だと最初に見つかった要素と、AncestorLevel=2だと2番目に見つかった要素とバインディングします。
 17~21行目のコードではAncestorLevel=2としているので、青枠(外側)のBorderとバインディングされています。  
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
全記事表示リンク

全ての記事を表示する

カテゴリ
タグリスト

月別アーカイブ
11  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09 
最新記事
リンク
最新コメント
検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。