我正在用C#开发一个WPF应用程序,并且正在考虑在各种窗口中实现自定义UI元素。
我希望有一个最小化的托盘(只有大约4px可见),在单击托盘旁边的图标后会展开。扩展版本将显示所有控件,并在我再次单击该图标时最小化。我创建了一个快速HTML concept来澄清事情。
我知道我可以在我的应用程序中放置一个stackpanel和按钮,当我点击按钮时它们会向上移动,但是我需要复制很多代码。
虽然我对C#很有经验,但我对WPF界面开发/模板还不熟悉,但我确信必须有一种方法,以便我可以在我的应用程序中使用该UI元素,而无需复制/粘贴我的表单类文件中有很多行代码。
我希望有人可以帮助我,或者至少指出我正确的方向。
答案 0 :(得分:3)
有三种方法可以自定义元素。
1 如果您只需要进行视觉修改,则可以使用样式来更改.net默认控件的外观。您甚至可以覆盖/扩展默认模板。
2 如果您想在控件中使用自定义逻辑,则可以创建自定义控件。该框架带来了许多“基础”。示例包括ContentControl
或HeaderedContentControl
。假设您要构建一个自定义扩展器控件,您可以从HeaderedContentControl
继承自定义控件,它为您提供了标题和内容属性,您只需自己实现切换逻辑。
如果您想构建可在整个应用程序中使用的基本功能,CustomControls是一个不错的选择。根据用例,它们也可以是主题/样式(见1)。
3 如果要将不同的控件组合到一个控件中,可以创建 UserControl 。用户控件使用XAML组成。大多数顶级控件都是由视图模型驱动的用户控件。
您的案例可以使用Popup
和ToggleButton
或Expander
来构建。
决定取决于所需的行为。如果您希望打开的面板在内容下移动,则需要一个扩展器。如果你想要下拉式功能,你需要弹出窗口。
如果使用弹出窗口,只需将IsPopupOpen
属性绑定到ToggleButton的IsChecked
,并设置PopupStaysOpen = false
以将按钮连接到弹出窗口。
如果使用扩展器控件,则应创建一个样式,该样式可应用于应用程序中的所有相等扩展器,以最小化每个视图中所需的XAML。
答案 1 :(得分:2)
如何使用Expander Control?
答案 2 :(得分:0)
有一个名为Expander的控件非常适合这种情况。您必须将其设置为您想要的样式,但它具有您想要内置的功能。