更改选项卡时间歇性BindingExpression路径错误

时间:2014-05-21 01:43:11

标签: wpf binding tabcontrol

我正在开发一个具有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'反映了我切换到的任何标签的根元素。

既然它有效,我只需要忍受错误,或者有什么可以做的。

1 个答案:

答案 0 :(得分:1)

您似乎收到错误,因为所选标签的DataContext正在动态更改..一旦标签发生变化,DataContext就不再存在了。

要摆脱它,您只需添加FallbackValue,如下所示:

     <StackPanel>
        <TextBox.Text>
            <PriorityBinding FallbackValue="{x:Null}">
                <Binding Path=".[OpMode].Int" />
            </PriorityBinding>
        </TextBox.Text>
    </StackPanel>