【问题标题】:WPF Custom Control with Databinding带有数据绑定的 WPF 自定义控件
【发布时间】:2018-12-14 14:45:19
【问题描述】:

我希望创建一个代表手的自定义控件。

这需要绑定到数据源,然后如果数据源中存在代表特定手指的值/索引值,则相关手指应显示为绿色。

谁能指出我开始使用这种控制的正确方向?

基本上,我正在创建一个应用程序,该应用程序可以记录人们的戒指在哪里以及有多少手指。

所以每个手指上的图形都会显示绿色加上一个数字,表示有多少。

Rough Hand Design for User Control

任何帮助或指导都会非常感激。

【问题讨论】:

  • 从这里开始阅读:Control Authoring Overview
  • 如果每个戒指有一个彩色带子会不会更好看?人们最多戴多少枚戒指?你也不需要将手指和拇指分成不同的几何形状。
  • 重新着色带。很好的主意。希望从基础开始,然后在我对如何开始有了更多了解后变得更好。分开手指和拇指只是视觉上的事情。让它看起来像一只手,因为会有 2 个。每个细小的索引从 0 到 9,按从小指到小指的顺序排列。

标签: wpf data-binding custom-controls


【解决方案1】:

我建议为此使用用户控件而不是自定义控件。正如我认为 Clemens 发布的链接所说,除非您真的要切换控件的模板,否则您不需要执行自定义控件 - 这比用户控件更难。

这将具有至少一个您要将集合绑定到的依赖项属性。将其设为 ObservableCollection。然后你可以通过说 0,1,0,2,0。如果人们超级动态地更改他们佩戴的戒指,您可以将其中一个集合设置为自身,以覆盖控件的更改通知。

我会在其中放置一个带有画布的视图框。 从某个地方抓取一只手的轮廓。您想从中获得几何图形,因此最好寻找 svg。 也许https://www.flaticon.com/free-icon/stop-hand-silhouette_57659

然后下载并安装 InkScape。 使用它来跟踪位图,如果这就是您所拥有的,然后另存为 > xaml。 在记事本中打开该文件,您将看到带有一组坐标的路径。抓住那些。这些可用于定义您用作资源或直接用作路径数据的几何图形。 我将这样的资源用于电子邮件“图标”: https://social.technet.microsoft.com/wiki/contents/articles/32610.wpf-layout-lab.aspx

或者您也可以使用 syncfusion 的 Metro 工作室中的一个手形图标(免费)https://www.syncfusion.com/downloads/metrostudio

你的手可以使用路径。 然后,您需要 5 个用于拇指和手指的项目控件。 您也可以将它们中的每一个都设为用户控件,但我会尝试 5 个控件进行第一次迭代。 他们应该将给定的每个项目模板化到 itemtemplate 中定义的绿色矩形中。

将它们中的 5 个放在你手的手指上品尝。

通过索引将它们的 itemssources 绑定到您的集合,并使用转换器返回指定的对象数量。因此,如果它是 3,那么您将生成三个对象。

该视图框可以缩放所有内容。因此,您可以根据自己的喜好调整控件的大小,并且戒指将留在手指上。

【讨论】:

  • 谢谢。我只是想知道通过用户控件来做这件事,因为它发生了:)。所以关于绑定。我原本是想传入一个(Int,int)的集合。只有在该手指上至少有 1 枚戒指时,物品才会存在。我希望将集合用于这两个目的。因此,如果 itemscollections 包含至少 1 个索引条目,它将变为绿色,然后将每个索引的条目计数显示为每个手指的值。我应该在 UserControl 后面的代码中添加所有这些逻辑吗?
  • 如果它是 observablecollection 你总是有 5 个数字。 0 表示没有戒指,没有对象添加到该手指的 itemssource 中,也没有绿色条带。 1 表示 1 个对象和 1 个波段。我认为您不需要用户控件中的任何代码,只需转换器即可。
猜你喜欢
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 2015-06-03
  • 1970-01-01
  • 2013-08-11
  • 2011-01-16
相关资源
最近更新 更多