0

我有一个带有标签和文本框作为内容的简单文本块。我想将文本块的 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 只是一个坏主意吗?

4

3 回答 3

4

是的,这是个坏主意。当您在 Text 属性中放置非字符串对象时,它被用作内容元素,就像在 FlowDocument 中一样,因此不像普通的 FrameworkElements 那样具有交互性。

于 2010-10-26T19:03:45.867 回答
1

您是否尝试过 StackPanel?

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

您的 IsEnabledProperty 是依赖属性吗?

于 2010-10-26T19:01:58.290 回答
0

您确定在 viewModel 中更新属性时会引发属性 IsEnableProperty 的 PropertyChanged 事件吗?

于 2010-10-27T07:29:18.980 回答