WPF - ReSharper无法识别XAML中的继承绑定范围

时间:2016-02-17 20:27:52

标签: wpf xaml resharper

我在XAML设计视图中遇到ReSharper问题。这是我的源代码:

MainWindow.xaml

<Window x:Class="MyNamespace.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        xmlns:vm="clr-namespace:MyNamespace.ViewModels">
    <Window.DataContext>
        <vm:MainWindowViewModel/>
    </Window.DataContext>
    <Grid>
        <StackPanel>

            <!-- User selects item from list -->
            <ListView ItemsSource="{Binding Items}" IsSynchronizedWithCurrentItem="True">
                <ListView.Resources>
                    <DataTemplate DataType="{x:Type Item}">
                        <TextBlock Text="{Binding Name}">
                    </DataTemplate>
                </ListView.Resources>
            </ListView>

            <!-- Currently selected list item details are shown here -->
            <ContentControl Content="{Binding Items}">
                <ContentControl.ContentTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Description}"/>
                        </StackPanel>                       
                    </DataTemplate>
                </ContentControl.ContentTemplate>
            </ContentControl>

        </StackPanel>
    </Grid>
</Window>

C#Classes

public class MainWindowViewModel
{
    public ObservableCollection<Item> Items { get; set; }

    public MainWindowViewModel()
    {
        Items = new ObservableCollection<Item>();
    }

    // ...
}

public class Item
{
    public string Name { get; set; }
    public string Description { get; set; }

    // ...
}

ReSharper在我的<TextBlock Text="{Binding Description}"/> XAML元素的ContentControl中加上描述,并带有警告文字Cannot resolve property 'Description' in data context of type 'MyNamespace.ViewModels.MainWindowViewModel'

我不确定它是如何混淆的,因为我已经在Window元素中指定了我的DataContext,所以它肯定知道我正在使用哪个类。我的应用程序运行没有问题,并按预期运行,所以我确定这是一个ReSharper问题。

1 个答案:

答案 0 :(得分:4)

如果我没错,那么当它位于不同的类(/ namespace)中时,MainWindowViewModel的DataContext中的描述属性不可用。 尝试像这样设置DataTemplate的DataType

<DataTemplate DataType="{x:Type Item}">

可能您需要导入clr-namespace,但如果需要,ReSharper应该建议正确的。