Что не так с привязкой TextBlock IsEnabled? - PullRequest
0 голосов
/ 26 октября 2010

У меня есть простой текстовый блок с меткой и текстовым полем в качестве содержимого. Я хотел бы связать свойство IsEnabled текстового блока со свойством в моей модели представления. По какой-либо причине метка и текстовое поле остаются отключенными, даже если свойство IsEnabled в модели представления изменяется правильно.

Кто-нибудь знает, что здесь происходит?

Это не работает:

<TextBlock IsEnabled="{Binding Path=IsEnabledProperty}">
    <Label Content="Test"/>
    <TextBox Text="blah"/>
</TextBlock>

Это прекрасно работает:

<TextBlock>
    <Label IsEnabled="{Binding Path=IsEnabledProperty}" Content="Test"/>
    <TextBox IsEnabled="{Binding Path=IsEnabledProperty}" Text="blah"/>
</TextBlock>

Это просто плохая идея использовать TextBlock, как это?

Ответы [ 3 ]

4 голосов
/ 26 октября 2010

Да, это плохая идея. Когда вы помещаете нестроковые объекты в свойство Text, оно используется в качестве элементов содержимого, как в FlowDocument, и поэтому не является интерактивным, как обычные FrameworkElements.

1 голос
/ 26 октября 2010

Вы пробовали вместо этого StackPanel?

   <StackPanel Orientation="Horizontal" IsEnabled="{Binding Path=IsEnabledProperty}">
    <Label Content="Test"/>
    <TextBox Text="blah"/>
   </StackPanel>

Является ли ваш IsEnabledProperty свойством зависимости?

0 голосов
/ 27 октября 2010

Вы уверены, что вы вызываете событие PropertyChanged для вашего свойства IsEnableProperty при его обновлении в viewModel?

...