UserControl
Element Binding を使用してまったく同じオブジェクトにバインドする2 つのコントロールがあります。
AllowNext="{Binding ElementName=MainGrid, Path=DataContext.CanContinue}"
最初のコントロールでは問題なく動作しますが、2 番目のコントロールではバインド例外が発生します。
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=MainGrid'. BindingExpression:Path=DataContext.CanContinue; DataItem=null; target element is 'WizardPage' (Name='DeductionPage'); target property is 'AllowNext' (type 'Boolean')
RelativeSource
また、2 番目のコントロールでバインディングを使用してみました。
AllowNext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Grid}}, Path=DataContext.CanContinue}"
しかし、これもエラーになります。
これが何であるか知っている人はいますか?
--
単純化されたコントロールは次のとおりです。
<Grid Name="MainGrid">
<w:Wizard Name="MyWizard" w:Designer.PageIndex="1" DataContext="{Binding ElementName=MainGrid, Path=DataContext.Policy}" >
<w:WizardPage Header="Main Member" MaxHeight="600" AllowNext="{Binding ElementName=MainGrid, Path=DataContext.CanContinue}" Name="MainPage">
</w:WizardPage>
<w:WizardPage Name="DeductionPage" Header="Policy Details" AllowBack="False" AllowNext="{Binding ElementName=MainGrid, Path=DataContext.CanContinue}">
</w:WizardPage>
</w:Wizard>
</Grid>
前述したように、MainPage は正常にバインドされますが、DeductionPage はまったくバインドされず、提供されたエラーが発生します。MainGrid の DataContext はコード ビハインドから設定されます。
public void SetDataContext(object o)
{
MainGrid.DataContext = o;
}