Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中创建自定义控件时,如何克服从多个类派生的需要 我知道C++不是C++,它限制了你从多个类中派生,但是在开发WPF应用程序时,克服它的方法有哪些。_C#_Wpf_Custom Controls_Derived Class - Fatal编程技术网

C# 在WPF中创建自定义控件时,如何克服从多个类派生的需要 我知道C++不是C++,它限制了你从多个类中派生,但是在开发WPF应用程序时,克服它的方法有哪些。

C# 在WPF中创建自定义控件时,如何克服从多个类派生的需要 我知道C++不是C++,它限制了你从多个类中派生,但是在开发WPF应用程序时,克服它的方法有哪些。,c#,wpf,custom-controls,derived-class,C#,Wpf,Custom Controls,Derived Class,在我的场景中,我有一个第三方控件,它是一个滑块,它不是从内容控件派生的,因此没有内容属性。然而,我需要有那个财产。 我想到了几种解决办法: 从多个类派生(在C#中不可能) 将附加属性添加到第三方控件 扩展第三方控件,并添加内容属性以及它运行所需的所有其他属性 将第三方控件封装在自定义控件中,并从内容控件派生 哪种方法是最好的?或者,如果您知道任何其他方法,请告诉我。我会选择选项3。这将允许您向第三方控件添加其他功能,而无需对其进行更新(选项2)。如果第三方提供商更新了解决方案,这将非常有用。您不

在我的场景中,我有一个第三方控件,它是一个滑块,它不是从内容控件派生的,因此没有内容属性。然而,我需要有那个财产。 我想到了几种解决办法:

  • 从多个类派生(在C#中不可能)
  • 将附加属性添加到第三方控件
  • 扩展第三方控件,并添加内容属性以及它运行所需的所有其他属性
  • 将第三方控件封装在自定义控件中,并从内容控件派生

  • 哪种方法是最好的?或者,如果您知道任何其他方法,请告诉我。

    我会选择选项3。这将允许您向第三方控件添加其他功能,而无需对其进行更新(选项2)。如果第三方提供商更新了解决方案,这将非常有用。您不需要重新添加更改。如果您不需要从内容控件派生控件,我不会选择选项4。这可能会让未来的开发人员感到困惑。因此,选项3似乎是最好的。

    我会选择选项3。这将允许您向第三方控件添加其他功能,而无需对其进行更新(选项2)。如果第三方提供商更新了解决方案,这将非常有用。您不需要重新添加更改。如果您不需要从内容控件派生控件,我不会选择选项4。这可能会让未来的开发人员感到困惑。因此,选项3似乎是最好的。

    选项3。。。在自定义控件上放置第三方控件的外观,该控件间接指向第三方控件的私有实例。试着在第三方控件的反汇编(使用Reflector或类似工具)中查找可以实现的接口,以帮助构建立面。

    选项3。。。在自定义控件上放置第三方控件的外观,该控件间接指向第三方控件的私有实例。试着在第三方控件的拆卸(使用反射器或类似工具)中查找可以实现的接口,以帮助构建立面。

    我赞成选项4。从长远来看,组合似乎比继承更好。稍后,您将能够用其他东西替换您的第三方控制,而无需外部世界的任何人知道更改。换句话说,您将在控件中封装对第三方控件的依赖关系。

    我赞成选项4。从长远来看,组合似乎比继承更好。稍后,您将能够用其他东西替换您的第三方控制,而无需外部世界的任何人知道更改。换句话说,您将在控件中封装对第三方控件的依赖。

    很难说。您的控件是否需要公开第三方滑块的属性?是的,它确实需要公开3d方滑块的所有属性。很难说。您的控件是否需要公开第三方滑块的属性?是的,它确实需要公开3d方滑块的所有属性。