我正在开发一个具有Tab控件的项目,其中一些项目的Content
设置为对象的实例,ContentTemplate
设置如下
<DataTemplate x:Key="AxisSetupTab">
<StackPanel>
<TextBox Text="{Binding .[OpMode].Int }" />
</StackPanel>
</DataTemplate>
这很有效,除非从该标签更改为具有不同模板的标签时出现以下错误
System.Windows.Data Error: 40 : BindingExpression path error: '[]' property not found on 'object' ''ListBox' (Name='logListBox')'. BindingExpression:Path=.[OpMode].Int; DataItem='ListBox' (Name='logListBox'); target element is 'TextBox' (Name=''); target property is 'Text' (type 'String')
奇怪的是,我的错误略有不同,具体取决于我切换到ListBox
的标签,而'name'反映了我切换到的任何标签的根元素。
既然它有效,我只需要忍受错误,或者有什么可以做的。
答案 0 :(得分:1)
您似乎收到错误,因为所选标签的DataContext
正在动态更改..一旦标签发生变化,DataContext
就不再存在了。
要摆脱它,您只需添加FallbackValue
,如下所示:
<StackPanel>
<TextBox.Text>
<PriorityBinding FallbackValue="{x:Null}">
<Binding Path=".[OpMode].Int" />
</PriorityBinding>
</TextBox.Text>
</StackPanel>