以下のようなユーザー コントロールがあるとします。コントロールActualWidth
の外側から「G1」グリッドに何かをバインドするにはどうすればよいでしょうか。
<UserControl x:Class="Blah">
<WrapPanel>
<Grid x:Name="G1">
...
</Grid>
<Grid>
...
</Grid>
</WrapPanel>
</UserControl>
以下のようなユーザー コントロールがあるとします。コントロールActualWidth
の外側から「G1」グリッドに何かをバインドするにはどうすればよいでしょうか。
<UserControl x:Class="Blah">
<WrapPanel>
<Grid x:Name="G1">
...
</Grid>
<Grid>
...
</Grid>
</WrapPanel>
</UserControl>
コントロールのコンテンツとしてではなく、コントロールの外側を意味する場合は、次ElementName
のようにバインディングで使用できます。
{Binding ElementName=G1, Path=ActualWidth}
別の Xaml ファイルのコントロールの外側を意味する場合、コントロールが他のコントロールのスコープ内にある場合は、Path プロパティの使用を試みることができます。
{Binding ElementName=ParentControl, Path=G1.ActualWidth}
ただし、G1 の名前をいつか変更する可能性があり、破損する可能性のあるバインディングを知ることはできないため、この設計はお勧めしません。
このユーザー コントロールを使用する外部コントロールにバインドする場合はDependencyProperty
、UserControl コード ビハインドで を宣言し、G1 をそのプロパティにバインドします。そして、外部コントロールのプロパティを UserControl の にバインドしますDependencyProperty
。これは、2 レベルの間接化のようなものです。