問題はRelativeSource
、次の場合には機能しないことです。私はSilverlight5を使用しています。
//From MainPage.xaml
<Grid x:Name="LayoutRoot" Background="White" Height="100" Width="200">
<Popup IsOpen="True">
<TextBlock Text="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType=Grid}}" />
</Popup>
</Grid>
//From MainPage.xaml.cs
public MainPage()
{
InitializeComponent();
DataContext = "ololo";
}
バインディングにブレークポイントを設定すると、エラーが発生します。
System.Exception:BindingExpression_CannotFindAncestor。
ElementName=LayoutRoot
の代わりに使用すればRelativeSource
、すべて問題ありません。
相対ソースバインディングが機能しないのはなぜですか?