2013-02-18 5 views
1

У меня есть два элемента управления в пределах моей 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; 
} 
+3

Не могли бы вы опубликовать исходный код для вашего UserControl? Мое первое предположение заключается в том, что это может быть проблема DataContext? – Dutts

+0

Я обновил свой вопрос! –

ответ

0

Я держал пари, что это MainGrid, который является обязательным источником не в логическом дереве вашей цели привязки.

0

Это проблема абсолютно с элементом привязки. Однако вы не указали источник, поэтому хотите отладить его и решить проблему.

Обратитесь к приведенному ниже адресу и разделу «Cannot find source for binding with reference», где объясняется, как его отлаживать и решать.

http://www.codeproject.com/Articles/244107/Debugging-WPF-data-bindings

+0

Спасибо, я посмотрел на это перед публикацией здесь. Это не помогло мне найти решение. Когда «Использовать сообщения трассировки» все мои свойства и т. Д. Написаны правильно, поскольку они скопированы с страницы, которая работает, также конвертер не работает в этом случае, и автор признает, что он ограничен! –

+0

Smaug

+1

Если у вас есть элементы управления как выше, что происходит? Я только что удалил 1-й элемент управления, только у меня есть второй. – Smaug

Смежные вопросы