在ListBox
我有一个 ItemContainer 的属性使用语法IsSelected
绑定到我的 ViewModel 的属性。IsSelected
<ListBox.ItemContainerStyle>
它工作正常,但我收到 Resharper 警告:
无法解析“FooSolution.BarViewModel”类型的数据上下文中的属性“IsSelected”。
如何在 ListBox ItemContainer 上指定 DataContext 类型以消除此警告?
这是代码。我有一BarViewModel
堂课:
public ObservableCollection<FooViewModel> FooItems { get;set; }
BarViewModel
分配给包含 ListBox 的控件中的 DataContext
如下FooViewModel
:
public bool IsSelected
{
get
{
return isSelected;
}
set
{
if (isSelected == value)
{
return;
}
isSelected = value;
RaisePropertyChanged(() => IsSelected);
}
}
和这样的 XAML:
<ListBox ItemsSource="{Binding FooItems}" SelectionMode="Multiple">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
更新
我尝试过d:DataContext
使用设置器进行设置,正如 HighCore 所建议的那样,但不幸的是,它无济于事,甚至破坏了构建:
<Setter Property="d:DataContext" Value="{d:DesignInstance yourxmlns:yourItemViewModelClass}"/>
(抛出:错误 1 XML 命名空间“schemas.microsoft.com/expression/blend/2008”中不存在标记“DesignInstance”;。第 31 行位置 50。)
更新 2
最后,解决方案是设置d:DataContext
样式元素本身(请参阅下面的答案):
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" d:DataContext="{d:DesignInstance local:FooViewModel }">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>