【发布时间】:2018-09-16 08:52:09
【问题描述】:
如何通过界面填充集合? 这是 XAML:
<local:ViewModel>
<local:Test Text="Hmm!"/>
</local:ViewModel>
这是有效的模型:
[ContentProperty("Tests")]
public class ViewModel
{
public List<Test> Tests { get; } = new List<Test>();
}
地点:
public class Test
{
public string Text { get; set; }
}
我想使用界面:
[ContentProperty("Tests")]
public class ViewModel
{
public IList<Test> Tests { get; } = new List<Test>();
}
不幸的是它没有编译:
无法在元素“ViewModel”上设置内容属性“Tests”。 “测试” 访问级别不正确或其程序集不允许访问。
我实际上实例化了一个 PostSharp AdvisableCollection<T>,并且不希望客户端代码依赖它。
【问题讨论】:
-
看起来该错误意味着您需要将 set 访问器添加到您的测试中,因为您正在尝试在 xaml 中设置集合?
-
不,事实并非如此。它添加到
List<T> { get; },但无法编译IList<T> { get; }。 -
只是为了澄清 - WPF 与 { get;仅在填充集合属性时。不这样想是一个常见的错误。不幸的是,没有对通用接口的适当支持——这项技术处于僵尸模式太久了。
标签: c# wpf xaml .net-4.7.2