在样式列表框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="https://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="https://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d"
除了以前的答案:摆脱错误
属性’DataContext’不能附加到’Style’类型的元素
添加一些虚拟命名空间
xmlns:ignore="designTimeAttribute"
现在使用它而不是d:DataContext
上述就是C#学习教程:在样式列表框ItemContainer上指定datacontext类型分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/987766.html