用于接口类型的WPF组合框

本文关键字:组合 WPF 接口类型 用于 | 更新日期: 2023-09-27 17:49:27

我目前正在构建一个包含如下结构的应用程序:

public class ViewModel
{
    public string property1 {get;set;}
    public string property2 {get;set;}
    public ISomeInterface interfaceProperty {get;set;}
}

然后定义了几个不同的类来实现ISomeInterface。

是否有一种方法可以将interfaceProperty表示为一个选择组合框,让我改变存储在那里的类型,而不需要在后面的代码中连接所有这些?

额外的皱纹,我还想显示一些绑定文本框来配置所选类型中的各种属性,当类型改变时,这些属性会改变,这是可能的吗?

用于接口类型的WPF组合框

是否有一种方法可以将interfaceProperty表示为一个选择组合框,让我改变存储在那里的类型,而不需要在后面的代码中连接所有这些?

也许,取决于你真正想做什么。如果您只是想将现有对象的集合绑定到ComboBox作为选择选项,那么应该可以正常工作。但显然,在这种情况下,如果你使用这个UI与多个实例的ViewModel类型,每个实例将结束相同的ISomeInterface对象为给定的实现类型。这可能是可接受的,也可能是不可接受的。

如果您想自动检测ISomeInterface的所有可用实现,并使用类型本身填充ComboBox,每次选择的实现更改时为ViewModel创建一个新实例,那么这将需要一些代码隐藏。

如果你确实想要唯一的对象实例,但可以手动指定选项,那么你可以通过工厂委托的集合或IValueConverter的实现(例如将stringType的值从ComboBox转换为所需类型的新实例)来实现。

不幸的是,你的问题没有提到需求,所以很难知道什么对你有用。有很多选项,枚举它们对于Stack Overflow来说"太宽泛了"。

我还想显示一些绑定文本框来配置所选类型中的各种属性,当类型改变时,这些属性会改变,这是可能的吗?

确定。只需为您想要处理的不同类型声明适当的DataTemplate资源,并使用ContentPresenterContent绑定到您想要显示的类型的实例。