我知道Xaml / WPF很少。我尝试在Windows 8都市应用中为Style
设计一个自定义Button
,其中有一个洋红色背景,按下后,有一个蓝色背景。我明白我需要使用{ {1}}但我无法在线找到任何对该主题知之甚少的人有意义的事情。有很多假设的知识。这是我到目前为止所得到的:
VisualStateManager
这段代码可能非常错误,但正如我所说,我一直试图修补一些我不能理解的信息来创造结果。
感谢您的时间
答案 0 :(得分:6)
为了节省很多麻烦,只需在Blend中进行编辑,然后您可以查看它生成的XAML,如果您想要了解更多将来手动编辑的细节。 Blend体验非常简单 - 在“状态”面板中选择要编辑的状态,您将看到它的预览。选择该状态后所做的任何更改都将作为故事板应用于该州。
答案 1 :(得分:3)
我相信这里有很多人,花时间写一个解释如何创建视觉状态和他们的目的。我仍然需要花一点时间来解释一些关于VSM的事情,我认为这些事情在文档中没有提到,但是很了解:
您已经知道可以在控件的不同图形表示之间进行更改。这些状态在范围内是独占的(VisualStateGroup)。含义您可以定义具有三个状态f.e的组。常规,按下和MouseOver。组中只能在给定时间应用一个状态,但您可以将这些状态与可写状态或只读状态等其他组合用。
如何正确使用它们:如果没有特殊情况,那么在你的控件中你只需要一个方法UpdateStates(bool useTransitions)
即可。您检查内部控制状态,如
if (this.IsReadOnly) -> VisualStateManager.GoToState("ReadOnlyState",...
每当您更改...井状态时,都会调用UpdateStates方法。这意味着你将拥有DependencyProperties和每个(相关的)DPChangeHandler(在寄存器调用中)。在ChangeHandler内部(以及需要的地方),您只需调用UpdateStates方法,让您的控件决定激活哪个状态。
这至少是MS在他们的控制中如何做到的。
希望能帮到你一点点。 :)