У меня есть два элемента управления в пределах моей UserControl
, где я связываю с точно таким же объектом с помощью элемента Binding:WPF элемент Связывание
AllowNext="{Binding ElementName=MainGrid, Path=DataContext.CanContinue}"
На первом контроле он работает нормально, но на втором я получаю связывающее исключение:
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
связывания на втором управления:
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 не связывает вообще и получает прилагаемую ошибку. DataContext из MainGrid устанавливается из кода позади:
public void SetDataContext(object o)
{
MainGrid.DataContext = o;
}
Не могли бы вы опубликовать исходный код для вашего UserControl? Мое первое предположение заключается в том, что это может быть проблема DataContext? – Dutts
Я обновил свой вопрос! –