WPF - BindingExpression路径错误与嵌套ViewModels

时间:2015-02-02 14:22:50

标签: c# wpf xaml binding

我知道这个论点有不同的主题,但我仍然无法找到解决方案。 这里有具体的问题:

我写了几个WPF UserControl。每个UserControl都有自己的ViewModelXaml视图位于单独的Xaml模板(Themes文件夹中)。

有一个“特殊”控件可托管其中一些自定义UserControl。这是场景

SpecialControl.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:My.Controls">

<Style TargetType="{x:Type local:SpecialControl}">
    <Setter Property="Template">
        <Setter.Value>
            [...]
            <ControlA  PropertyA="{Binding Path=DataSource, RelativeSource={RelativeSource TemplatedParent}}" />
            [...]

PropertyA没问题,因为它绑定到SpecialControlViewModel.DataSource

ControlA.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:My.Controls">

<Style TargetType="{x:Type local:SpecialControl}">
    <Setter Property="Template">
        <Setter.Value>
            [...]
            <TextBlock Name="PART_MyTextBox" Text="{Binding Path=DataContext.MyTextProperty  Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource qualityGraphicConverter}}" />

MyTextProperty ControlA中定义了ViewModel

当我运行应用程序时,一切正常,但在输出日志中我可以读取类似的内容:

System.Windows.Data Error: 40 : BindingExpression path error: 'MyTextProperty ' property not found on 'object' ''SpecialControlViewModel' (HashCode=8043914)'. BindingExpression:Path=DataContext.MyTextProperty; DataItem='ControlA' (Name=''); target element is 'TextBlock' (Name='PART_MyTextBox'); target property is 'Text' (type 'String')

如何修复我的绑定以避免这些消息?

0 个答案:

没有答案