【问题标题】:Create Simple Custom XAML / C# button创建简单的自定义 XAML/C# 按钮
【发布时间】:2012-12-30 02:31:46
【问题描述】:

首先,我是 XAML / C# 的新手(我是 iOS/Android 程序员),所以请多多包涵,不要立即投反对票。我的应用程序有一些包含按钮的 GridView。很多这些按钮是相似的,我想重构它。为简单起见,假设我的按钮只是具有给定颜色的矩形。此颜色可能来自定义 GridView 中特定项目的 Item 类,也可能是硬编码的。我希望矩形在悬停和按下状态时改变颜色。我希望这些颜色也成为参数。

实现这一目标的最佳方法是什么?

  1. 我尝试创建一个 Button 子类,但不知何故我无法访问 VisualStateManager 中的依赖属性
  2. 我尝试在代码隐藏中编写内容,但不知道如何将点击命令委托给 ViewModel 类。

谁能给我一个小的工作示例?

谢谢

【问题讨论】:

  • 听起来你想要的是定义一个按钮样式。 msdn.microsoft.com/en-us/library/bb613545.aspx
  • 我想我知道如何为按钮创建样式。要点是我希望能够将它们参数化如下: 其中这些参数都是自定义依赖属性...

标签: c# xaml windows-8


【解决方案1】:

您可以使用样式模板来做到这一点。

在 Visual Studio 设计器中,右键单击您的按钮,然后选择 Edit Template,然后选择 Edit a Copy...

然后系统会提示您命名新样式以及将其存储在哪个文件中。现在,只需给它一个唯一的名称,例如 MyButtonStyle,然后选择当前文件。

Visual Studio 随后会将样式的副本添加到当前 xaml 文档,并更新您的按钮以使用新样式。

<Button x:Name="Download" Style="{StaticResource MyButtonStyle}"></Button>

在此之后,您可以更新新样式,包括更改不同视觉状态(例如悬停或单击)的颜色。

然后您可以继续在同一文档的其他按钮中使用新样式。要在多个 xaml 文档中使用该样式,您必须将其拉出到一个公共资源文件中。

【讨论】:

  • 您好 Chue,感谢您的详细回答。但是,我的实际按钮与我想将其坐标作为参数传递的几个矩形一致。它还将包含一个图标。我认为正确的模板不可能做到这一点?
  • @JorisWeimar - 图标应该是可能的。对于矩形我不确定,但我会看看绑定:msdn.microsoft.com/en-us/library/windows/apps/xaml/…
【解决方案2】:

所以您想使用自定义属性来调整您的按钮。这是使用自定义控件的好时机。您可以创建所需的任何依赖属性并在代码中调整布局。 http://timheuer.com/blog/archive/2012/03/07/creating-custom-controls-for-metro-style-apps.aspx

【讨论】:

  • 但我似乎无法访问 visualstatemanager 中的依赖项属性。我需要根据按下、悬停、正常更改按钮状态...
猜你喜欢
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 2016-12-27
  • 2016-10-03
相关资源
最近更新 更多