2016-02-17 4 views
1

У меня возникают проблемы с ReSharper в дизайне XAML. Вот мой исходный код:WPF - ReSharper не распознает область унаследованного связывания в XAML

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# Классы

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}"/> в моем ContentControl XAML элемента с предупреждающим текстом от Cannot resolve property 'Description' in data context of type 'MyNamespace.ViewModels.MainWindowViewModel'

Я не уверен, как его запутали, потому что я уже определил свой DataContext уже в элементе Window, так что он определенно знает, с каким классом я работаю. И мое приложение работает без проблем и функционирует так, как ожидалось, поэтому я уверен, что это проблема ReSharper.

ответ

2

Если я не ошибаюсь, свойство Description не может быть доступно в DataContext MainWindowViewModel, если оно находится в другом классе (/ namespace). Попытка установить тип данных в DataTemplate как этот

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

Возможно, вам нужно импортировать пространство имен CLR-, но ReSharper должен предложить правильный, если это необходимо.

+0

Это исправило проблему! Я понял, что я задал «DataType» в моем «ListView», но не в моем «ContentControl», который объясняет, почему ReSharper только жаловался в одном месте. Спасибо! –

+1

@KyleV. О, я не видел, что вы также задали DataType в Ресурсе, но он все равно необходим в ContentControl .. никаких проблем, ваш прием (: –

Смежные вопросы