У Resharper недостаточно информации, чтобы определить, используется ли сеттер.
Например:
Этот код:
public partial class Page2
{
public Page2()
{
InitializeComponent();
DataContext = new List<ViewModel>
{
new ViewModel()
};
}
}
public class ViewModel : ViewModelBase
{
private bool _combiBanksSelected;
public bool CombiBanksSelected
{
get { return _combiBanksSelected; }
set
{
Set(()=>CombiBanksSelected, ref _combiBanksSelected, value);
}
}
}
с этим Xaml:
<Grid>
<Grid.Resources>
<DataTemplate x:Key="Template" >
<CheckBox IsChecked="{Binding CombiBanksSelected}"/>
</DataTemplate>
</Grid.Resources>
<ListBox ItemsSource="{Binding}" ItemTemplate="{StaticResource Template}" />
</Grid>
покажет, что сеттер не используется (когда SWA включен).
Однако, если вы измените Xaml (добавив DataType = "{x: Type Samples: ViewModel}" ) на:
<Grid>
<Grid.Resources>
<DataTemplate x:Key="Template" DataType="{x:Type Samples:ViewModel}">
<CheckBox IsChecked="{Binding CombiBanksSelected}"/>
</DataTemplate>
</Grid.Resources>
<ListBox ItemsSource="{Binding}" ItemTemplate="{StaticResource Template}" />
</Grid>
R # теперь имеет достаточно информации и не отображает предупреждение.
Конечно, есть и другие способы дать R # и VS Intellisense больше подсказок о типах, которые вы используете. Примеры:
Использование локатора вида MVVM Light:
<UserControl ...
DataContext="{Binding AViewModel, Source={StaticResource Locator}}" />
Использование d: DataContext. Я рекомендую посмотреть это MSDN прохождение
<UserControl ...
d:DataContext="{d:DesignInstance AViewModel, IsDesignTimeCreatable=true}"
Явная установка DataContext
<UserControl.Resources>
<AViewModel x:Key="theModel/>
</UserControl.Resources>
<Grid DataContext="{StaticResource theModel}"> ...
и т.д ...
Любой из этих методов позволяет R # и VS выводить использование типов и предоставлять intellisense.