ItemsControl儿童活动WPF C#

时间:2011-07-28 09:49:42

标签: c# wpf xaml

我在一个15 * 15的uniformgrid中安排的ItemsControl中有225个三个状态切换按钮(Off,Vertical,Horizo​​ntal)。有没有办法找到选中的按钮,检查状态和位置?只是一点点背景,我正在做类似拼字游戏的游戏。

enter image description here

例如。我怎样才能找到红场的状态和位置?

  1. 当用户点击Tile时,我想触发一个事件,其中程序记录它的索引在这种情况下,例如。 57或7,3
  2. 然后,当用户输入他们的Word时,是否可以在ToggleButton状态(垂直,水平)的方向上预览角色?但是没有写入ObservableCollection,ItemsControl还绑定了吗?
  3. 非常感谢

2 个答案:

答案 0 :(得分:1)

我会通过DataBinding解决这个问题(就像其他一切一样)。

让我们首先定义我们的viewmodel:

public class ScrabbleViewModel
{
  readonly bool[,] matrix = new bool[15,15];

  public bool[,] GameMatrix
  {
      get { return matrix; }
  }
}

并将其分配给您的usercontrol或窗口并创建复选框:

public partial class GameWindow : Window
{
  public GameWindow()
  {
    InitializeComponent();
    this.DataContext = new ScrabbleViewModel();
    CreateCheckBoxes();
  }

  void CreateCheckBoxes()
  {
    for(int y=0;y<15;y++)
    {
      for (int x = 0; x < 15; x++)
      {
        var chk = new CheckBox();
        chk.SetValue(Grid.RowProperty, y);
        chk.SetValue(Grid.ColumnProperty, x);

        var binding = new Binding(string.Format("GameMatrix[{0},{1}]", y, x));
        binding.Mode = BindingMode.TwoWay;
        chk.SetBinding(CheckBox.IsCheckedProperty, binding);

        grid.Children.Add(chk);
      }
    }
  }
}

答案 1 :(得分:0)

你应该能够遍历ItemsControl的子控件,然后循环中的每个项目,检查按钮的状态以及是否选中它,然后检索它的位置。

此链接有助于:

How do I access the children of an ItemsControl?