我在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问题。
答案 0 :(得分:4)
如果我没错,那么当它位于不同的类(/ namespace)中时,MainWindowViewModel的DataContext中的描述属性不可用。 尝试像这样设置DataTemplate的DataType
<DataTemplate DataType="{x:Type Item}">
可能您需要导入clr-namespace,但如果需要,ReSharper应该建议正确的。