创建可自定义的网格覆盖

时间:2010-09-24 09:20:09

标签: wpf

只是寻找一些关于我应该采用什么控制或广泛方法的输入。我将在我正在编写的程序中加载一个png。然后我可以指定我想要在图片上分割32x32行(我没有打破图片,只是指定一个网格在顶部)。因此,显然我需要一些东西,我可以选择这些“单元格”(网格或其他任何内容)的多个,并轻松识别用户正在选择的内容。网格是做这个还是更像是创建指南然后创建一些矩形或什么?

1 个答案:

答案 0 :(得分:1)

您可以使用ItemsControl或派生类,例如SelectorItemsPanel属性设置为Grid。在ItemsContainerStyle属性中,将为ContentControl设置样式。 ContentControl是将使用ItemsSource属性为ItemsControl绑定的列表中的每个项生成的对象。在该样式中,您将为ControlTemplate设置ContentControl以包含BorderRectangle或类似内容,以获取网格线。 ControlTempalte中的根控件将Grid.Row和Grid.Column属性绑定到数据项的.Row.Column属性,这些属性将是DataContext。< / p>

最后,再将ItemsControl绑定到这些DataItem的ObservableCollection

<ItemsControl ItemsSource={Binding MyDataItems}  ....

您的DataItem看起来像这样:

public class DataItem : INotifyPropertyChanged
{
     public int Row
     {
          get { // return field  }
          set { // raise the PropertyChanged event here  }
     }

     public int Column
     {
          get { // return field  }
          set { // raise the PropertyChanged event here  }
     }

}