在样式列表框ItemContainer上指定datacontext类型

ListBox我使用语法将ItemContainer的IsSelected属性绑定到我的ViewModel的IsSelected属性。

它工作正常,但我得到一个Resharper警告:

无法在“FooSolution.BarViewModel”类型的数据上下文中解析属性“IsSelected”。

如何在ListBox ItemContainer上指定指定DataContext类型以消除此警告?

这是代码。 我有一个BarViewModel类:

 public ObservableCollection FooItems { get;set; } 

BarViewModel被分配给Control中包含ListBox的DataContext

FooViewModel如下:

 public bool IsSelected { get { return isSelected; } set { if (isSelected == value) { return; } isSelected = value; RaisePropertyChanged(() => IsSelected); } } 

和XAML这样:

        

更新我尝试使用setC设置d:DataContext ,正如HighCore所建议的那样,但不幸的是,它没有帮助,甚至打破了构建:

  

(抛出:错误1标签’DesignInstance’在XML命名空间’schemas.microsoft.com/expression/blend/2008’中不存在;;第31行位置50.)

更新2最后,解决方案是在样式元素本身上设置d:DataContext (请参阅下面的答案):

     

正如@HighCore所指出的那样,解决方案是从blend SDK中指定d:DataContext属性,但是,它仅在Style元素本身设置时才有效,而不是在属性设置器中:

    

这将删除Resharper的警告,并在ViewModel上重新声明属性时更改绑定路径。 凉!

使用Style标签的其他属性指定d:DataContext="{d:DesignInstance nmspc:Clz}"对我没有帮助:R#/ IntelliSense真的停止突出显示我绑定的属性但是设计器还向我显示了一条错误消息而不是观点

我发现的技巧是在Style标签指定 。 它似乎是如此普遍,它回答了另一个问题,关于使用接口作为d:DataContext

以下是一个小例子的答案: https : //stackoverflow.com/a/46637478/5598194

使用d:DataContext如下:

  

您还需要将以下xmlns es添加到根元素:

  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" 

除了以前的答案:摆脱错误

属性’DataContext’不能附加到’Style’类型的元素

添加一些虚拟命名空间

 xmlns:ignore="designTimeAttribute" 

现在使用它而不是d:DataContext