【发布时间】:2013-12-03 06:01:38
【问题描述】:
我有以下情况:
我有几个 ViewModel 对象,其中一些实现了接口ISomeInterface,有些则没有。这些接口公开了一个名为SomeEnumeration (IEnumerable<T>) 的属性。
例如:
public sealed class ViewModelA : ViewModelBase, ISomeInterface
{
// ...
IEnumerable<Foo> ISomeInterface.SomeEnumeration
{
get { ...; }
}
}
public sealed class ViewModelB : ViewModelBase
{
// ...
}
到目前为止,我的 XAML 的设计方式是两个 ViewModel 都恰好具有我要绑定的属性(即PropertyA、PropertyB 等)。我还没有遇到我要绑定的属性在我设置为DataContext 的 ViewModel 上不存在的情况。但是,现在我会...而且它将针对明确实现的属性(我不确定这是否会对 WPF 绑定引擎产生任何影响)。
基本上,我的 xaml 将如下所示:
<StackPanel
Visiblity="{Binding Path=SomeEnumeration, Converter={StaticResource AnyConverter}">
...
</StackPanel>
我不确定这是否可行,因为:
- 并非每个
DataContext都会包含该属性(如果不包含,则应将其隐藏)...在这种情况下我该怎么办? - 对于确实包含该属性的
DataContexts,它是明确实现的...您必须先进行转换还是什么?
【问题讨论】:
标签: c# wpf data-binding datacontext explicit-interface