【问题标题】:Understanding the XAML Silverlight Model: Adding lines to a canvas?了解 XAML Silverlight 模型:向画布添加线条?
【发布时间】:2011-01-28 19:46:47
【问题描述】:

我有一个画布元素,我想在它上面画网格线(所以它最终看起来有点像工程纸),。

在我看来,有几种方法可以做到这一点:

  1. 使用 XAML 并将“路径”元素复制/粘贴到画布中并更改顶部、左侧属性
  2. 使用代码添加网格线
  3. 数据绑定?

XAML 简单明了,但很麻烦。 代码也很简单。

我不确定最后一个。我一直认为使用代码隐藏来构建控件是 Winforms 的做事方式,我更愿意以“正确的方式”做事。那么我会创建一个“top”和“left”值的列表,并从中生成行吗?还是数据绑定真的用于将数据放入excel网格等?

【问题讨论】:

  • 这些是动态行还是您提前知道您需要构建什么...也可以使用后面的代码或 XAML,它是关于定义数据,而数据绑定是关于表示数据,所以它们不一定是独立的实体。
  • 我提前知道了。线条是帮助在画布上放置形状的静态辅助工具。

标签: silverlight xaml data-binding


【解决方案1】:

一定要使用代码。它可以让您灵活地修改和调整网格的间距,并且绝对遵循 DRY 原则。

你可以编写类似下面的伪代码:

int width = 500;
int height = 500;
int increment = 5;

int i = 0;
public void DrawHorizontalLines() {
   while (i <= height) {
      DrawHorizontalLine(i);
      i += increment;
}

public void DrawHorizontalLine(int startY) {
  //pseduo code to draw line goes here
  //line starts from X=0 and goes to X=width and begin Y spaces from the top
}

添加,如果你喜欢,你可以把所有的线放在一个矩形内,这样你就可以轻松地显示/隐藏矩形,从而显示/隐藏网格。

【讨论】:

    【解决方案2】:

    如果线条是静态的,即它们的位置不会改变,我会将它们添加到代码隐藏中以提高速度和简单性。

    数据绑定适用于绑定动态数据,即不断变化的数据。此外,将 XAML 中的数据外观定义为模板允许您对 UI 进行“皮肤”或“主题化”。但是,在您的情况下,我认为简单的方法可能是最好的。

    【讨论】:

      猜你喜欢
      • 2013-09-27
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      相关资源
      最近更新 更多