我正在尝试重新设计一些 ToggleButtons。显然我不能简单地将背景设置为新颜色,因为有一个“控制模板”提供了切换按钮的视觉行为。所以我需要做的是在 XAML 中为 ToggleButton 指定一个替换“ControlTemplate”,它提供不同的视觉行为,除了简单的背景颜色。
Q1。它是否正确?
我想从我从这里抓取的 ToggleButton 的“默认”控件模板开始,然后对其进行修改。实际上,我猜这是 Silverlight 的默认 ControlTemplate,而且我没有使用 Silverlight,我使用的是 WPF。但是... WPF 的相应文档页面不包含默认控件模板的规范。它提供了“一个”ControlTemplate,这不是我想要的。
Q2。我不确定我使用 Silverlight 的东西是否重要。可以?
在 Silverlight 示例中,有一个 vsm 的 XML 命名空间前缀应用于 VisualStateManager。显然 xml 命名空间是
xmlns:vsm = "clr-namespace:System.Windows;assembly=System.Windows"
...但在其他地方我读到这个 XML 命名空间“不再需要”。
这一切都非常令人困惑。
在 Googlespace 中,有对我之前接触过的称为“WPF 工具包”的引用 -在 WPF V4 发布之前,我将它用于自动完成文本框。我猜想一些 WPF Toolkit 的东西被纳入 WPF for .NET v4.0,这就是我不再需要指定 WPF 工具包的原因。
第三季度。如果有人能证实这种理解,我将不胜感激。
好的,现在从 ToggleButton 的“默认”ControlTemplate 开始,我的第一步是在进行任何更改之前对其进行编译。它不编译,失败
c:\dev...\ToggleButtonStyle1.xaml(23,14): 错误 MC3074: XML 命名空间中不存在标记“VisualStateManager.VisualStateGroups” http://schemas.microsoft.com/winfx/2006/xaml/演示文稿'。第 23 行位置 14。
够清楚。然后我查看了在 XAML 中指定 VisualStateManager 的文档。令人困惑的是,它指定了两个 xml 命名空间,其中一个是我实际使用的。
Q4嗯,我应该使用哪个?其中之一,我确实使用过,但它没有用。该文档完全不清楚指定两个 XML 名称空间的含义。(砍掉他们的头!)
我在项目文件中有对 PresentationFramework.dll 的引用:
<ItemGroup>
....
<Reference Include="PresentationFramework" />
</ItemGroup>
我在这里没有使用 Visual Studio;我正在使用文本编辑器。我想了解它是如何工作的,而不是要按什么按钮。
感谢您提供的任何帮助。
只是一个侧面评论 - 这一切似乎非常非常复杂。我想做的就是在打开时更改 ToggleButton 的颜色。真的不应该这么复杂。