我有一个简单的文本块,标签和文本框作为内容。 我想将文本块的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是一个坏主意吗?
答案 0 :(得分:4)
是的,这是一个坏主意。当您在Text属性中放置非字符串对象时,它将用作内容元素,就像在FlowDocument中一样,因此不像普通的FrameworkElements那样是交互式的。
答案 1 :(得分:1)
您是否尝试过StackPanel?
<StackPanel Orientation="Horizontal" IsEnabled="{Binding Path=IsEnabledProperty}">
<Label Content="Test"/>
<TextBox Text="blah"/>
</StackPanel>
您的IsEnabledProperty是依赖属性吗?
答案 2 :(得分:0)
您是否确定在viewModel中更新属性IsEnableProperty时会引发PropertyChanged事件?