Связывание WPF с RelativeSource окна требует "DataContext" в пути? - PullRequest
8 голосов
/ 22 марта 2010

Следующий код работает, но мне любопытно, почему мне нужен путь с префиксом «DataContext»? В большинстве других случаев используемый путь относится к DataContext. Это потому, что я использую RelativeSource? Потому что источник находится на корневом уровне (Window)?

    <Style TargetType="TextBox">
        <Setter 
           Property="IsReadOnly"
           Value="{Binding RelativeSource={RelativeSource FindAncestor, 
           AncestorType={x:Type Window}}, Path=DataContext.IsReadOnly}"/>
    </Style>        

1 Ответ

13 голосов
/ 22 марта 2010

Вы привязываетесь к DataContext содержащего окна, а не к самому окну. Вы должны были поставить:

Value="{Binding RelativeSource={RelativeSource FindAncestor, 
       AncestorType={x:Type Window}}, Path=IsReadOnly}"

Это будет связано со свойством IsReadOnly окна, а не с его классом контекста данных. Поскольку Window не содержит свойства IsReadOnly , это, очевидно, относится к другому классу (скорее всего, к вашей ViewModel, если вы используете MVVM и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...