如何通过使用caliburn.micro中的命名约定正确绑定ItemsControl的ItemsSource属性?

在视图中有一个名为Items的ItemsControl,并且ViewModel包含一个BindableCollection<T>属性Items属性,我希望它们通过使用caliburn.micro中的命名约定机制正确地绑定。 ,但效果不如预期。

当我在视图中显式添加ItemsSource="{Binding Items}"时,它起作用了,我想知道在ItemsControl中使用命名约定时遗漏了哪些关键点?

iCMS 回答:如何通过使用caliburn.micro中的命名约定正确绑定ItemsControl的ItemsSource属性?

首先,使用单词“ Items”作为属性,控件等的名称是一个错误的选择。令人困惑。如果有人正在维护您的代码或正在阅读问题,这是正确的。您应该考虑过事物的名称。

caliburn micro的约定在这里说明:

https://caliburnmicro.com/documentation/conventions

基本上,要检查一个控件。

该名称用于从数据上下文中查找属性。

如果它们匹配,则将绑定该控件的依赖项属性。

所使用的依赖项属性因控件而异。文本是TextBox和TextBlock的默认设置。 ItemsSource是项控件的默认项。

因此,您的问题的答案是控件名称应与属性名称匹配。

看上去,这不是为什么绑定失败的原因。

您还需要以某种方式提供该数据上下文的实例。

您证明了这种情况与工作显式绑定有关。

因此,两个最可能的原因是:

您的引导程序没有运行caliburn microwireup代码。

您的视图不是由引导程序提供的,并且您还没有使用viewmodel.bind来连接所有内容。

您已经以某种方式干扰了默认的绑定约定。

PS

https://caliburnmicro.com/announcements/stepping-away

本文链接:https://www.f2er.com/1858585.html

大家都在问