2011-05-17 30 views
2

我正在C#中开发WPF应用程序,并且正在考虑在各种窗口中实现自定义UI元素。在WPF中创建可重用的界面元素

我想要一个最小化的托盘(仅约4px可见),在点击托盘旁边的图标后展开。扩展版本将显示所有控件,并在再次单击该图标时最小化。我创建了一个快速的HTML concept来澄清事情。

我知道我可以在我的应用程序中放置一个堆栈面板和按钮,并且在单击按钮时将它们向上移动,但是之后我需要复制很多代码。尽管我对C#有丰富的经验,但对于WPF界面开发/模板我还是比较陌生,但我确信必须有一种方法,以便我可以在应用程序中使用该UI元素,而无需复制/在我的表单类文件中粘贴大量代码行。

我希望有人能帮助我,或者至少让我指向正确的方向。

回答

2

有三种自定义元素的方法。

如果你只需要视觉的修改,你可以使用风格改变.NET默认控件的外观。您甚至可以覆盖/扩展默认模板。

如果你想在一个控制的自定义逻辑,你可以创建一个自定义控件。该框架带来了许多“基元”。示例是ContentControlHeaderedContentControl。假设你想建立一个自定义扩展的控制,你可以从HeaderedContentControl它为您提供了页眉和内容属性继承您的自定义控制你不得不自己实现的触发逻辑。 如果您想要构建可在整个应用程序中使用的基本功能,CustomControls是一个不错的选择。根据用例,它们也可以是主题/样式(参见1)。

如果您想将不同的控件组合成一个控件,您可以创建一个UserControl。用户控件由XAML组成。大多数顶级控件是由视图模型驱动的用户控件。

您的情况可以使用PopupToggleButtonExpander构建。

的决定取决于所期望的行为。如果您希望打开的面板在内容下移后需要扩展器。如果你想要一个下拉式的功能,你需要弹出。

如果您使用弹出窗口,只需将ToggleButton的IsPopupOpen Property属性绑定到IsChecked,并将PopupStaysOpen = false设置为将按钮连接到弹出窗口。

如果您使用扩展器控件,则应该创建一种可应用于应用程序中所有平等扩展器的样式,以最大限度地减少每个视图中所需的XAML。

2

如何使用扩展控件?

0

有一个称为扩展器的控件非常适合这个。您必须将其设置为您想要的样式,但它具有您想要的内置功能。