2013-02-22 3 views
0

Может ли кто-нибудь объяснить мне функцию Relativesource-ancestor при связывании с MVVM. в основном свойство зависимости привязано к кнопке с приведенной выше концепцией через модели просмотра. Это будет отлично для некоторых объяснений с образцами. Или некоторые ссылки также будут делать.Связывание с использованием относительного источника и свойства зависимостей - MVVM

Редактировать 1:

<Button Name="button1" Content ="Edit" Margin="0, 0, 5, 0" Style="{StaticResource button}" 
     Grid.Column="0" Visibility="{Binding cMode, Converter={StaticResource VisibilityConverter}, ConverterParameter={StaticResource invert}}" 
     Click="EditButton_Click" 
     IsEnabled="{Binding Path= Data.User.CanEdit, RelativeSource={RelativeSource FindAncestor, AncestorType=views:SCView, AncestorLevel=1}}"/> 

Также CanEdit является DependencyProperty

+0

Вы прочитали эту статью [http://msdn.microsoft.com/en-us/library/ms743599.aspx)? – DHN

+0

Я прочитал, но я не очень понимаю, что ... – user1687824

+0

А что такое 'DataContext'? Из того, что я вижу, я думаю, что вам не нужна привязка RelativeSource. – DHN

ответ

2

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

В следующем примере кнопка будет иметь такую ​​же ширину, как и сетки:

<Grid Width="100"> <!--Level=2--> 
    <Border> <!--Level=1--> 
     <Button Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Grid}}, Path=ActualWidth}"/> 
    </Border> 
</Grid> 

Кроме того, вы можете установить уровень, где искать, задав AncestorLevel.

+0

Пожалуйста, проверьте мои edit1. В том, является ли предком моделью просмотра, которая является SCView? – user1687824

+0

Попробуйте следующее: 'Path = DataContext.Data.User.CanEdit' –

+0

hmmm ... я вижу некоторую разницу. что означает это изменение? я имею в виду, что я didn, t получить то, что происходит с этим изменением – user1687824

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