我知道 C# 不是 C++,因为它限制您从多个类派生,但是在开发 WPF 应用程序时有什么方法可以克服它。
在我的场景中,我有一个第三方控件,它是一个滑块,它不是从内容控件派生的,因此没有内容属性。但是我需要拥有该属性。我想到了几个解决方案:
- 从多个类派生(在 C# 中不可能)
- 将附加属性添加到第三方控件
- 扩展第三方控件并添加内容属性和它运行所需的所有其他属性。
- 在我的自定义控件中封装第 3 方控件并从内容控件派生。
什么方法是最好的?或者,如果您知道任何其他方法,请告诉我。
我知道 C# 不是 C++,因为它限制您从多个类派生,但是在开发 WPF 应用程序时有什么方法可以克服它。
在我的场景中,我有一个第三方控件,它是一个滑块,它不是从内容控件派生的,因此没有内容属性。但是我需要拥有该属性。我想到了几个解决方案:
什么方法是最好的?或者,如果您知道任何其他方法,请告诉我。
我投票支持选项 4。从长远来看,组合似乎是比继承更好的选择。稍后,您将能够用其他东西替换您的第三方控件,而外部世界的任何人都不知道更改。换句话说,您将在您的控件中封装对第三方控件的依赖。
我会选择选项 3。这将允许您向 3rd 方控件添加其他功能,而无需对其进行更新(选项 2)。如果第 3 方提供商更新解决方案,这将很有用。您不需要重新添加您的更改。如果您不需要控制从内容控制派生,我不会选择选项 4。这可能会让未来的开发人员感到困惑。所以选项 3 似乎是最好的。
选项 3... 将第 3 方控件的外观放在您的自定义控件上,该控件间接指向第 3 方控件的私有实例。尝试查看第 3 方控件的反汇编(使用 Reflector 或类似的),以获取您可以实现以帮助构建外观的接口。