Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ItemsControl子事件WPF C#_C#_Wpf_Xaml - Fatal编程技术网

ItemsControl子事件WPF C#

ItemsControl子事件WPF C#,c#,wpf,xaml,C#,Wpf,Xaml,我在ItemsControl中有225个三状态切换按钮(关闭、垂直、水平),以15*15 uniformgrid排列。有没有办法找到选中按钮、选中状态和位置?只是一点背景我正在做一个类似拼字游戏的游戏 我怎样才能知道红场的状况和位置 当用户点击互动程序时,我想触发一个事件,程序会记录它的索引,例如57或7,3 然后,当用户输入他们的单词时,是否可以在切换按钮状态(垂直、水平)的方向上实时预览字符?但是,是否尚未写入ItemsControl绑定到的ObservableCollection中 非常

我在ItemsControl中有225个三状态切换按钮(关闭、垂直、水平),以15*15 uniformgrid排列。有没有办法找到选中按钮、选中状态和位置?只是一点背景我正在做一个类似拼字游戏的游戏

我怎样才能知道红场的状况和位置

  • 当用户点击互动程序时,我想触发一个事件,程序会记录它的索引,例如57或7,3
  • 然后,当用户输入他们的单词时,是否可以在切换按钮状态(垂直、水平)的方向上实时预览字符?但是,是否尚未写入ItemsControl绑定到的ObservableCollection中

  • 非常感谢

    您应该能够通过ItemsControl的子控件进行循环,然后对于循环中的每个项目,检查按钮的状态,如果选中,则检索其位置

    此链接将有助于:


    您应该能够在ItemsControl的子控件之间循环,然后对于循环中的每个项目,检查按钮的状态,如果选中,则检索其位置

    此链接将有助于:

    我会通过数据绑定解决这个问题(就像其他问题一样)

    让我们首先定义viewmodel:

    public class ScrabbleViewModel
    {
      readonly bool[,] matrix = new bool[15,15];
    
      public bool[,] GameMatrix
      {
          get { return matrix; }
      }
    }
    
    并将其分配给用户控件或窗口,然后创建复选框:

    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);
          }
        }
      }
    }
    
    公共部分类游戏窗口:窗口
    {
    公共游戏窗口()
    {
    初始化组件();
    this.DataContext=新的ScrabbleViewModel();
    创建复选框();
    }
    void createcheckbox()
    {
    对于(inty=0;y,我会通过数据绑定来解决这个问题(和其他问题一样)

    让我们首先定义viewmodel:

    public class ScrabbleViewModel
    {
      readonly bool[,] matrix = new bool[15,15];
    
      public bool[,] GameMatrix
      {
          get { return matrix; }
      }
    }
    
    并将其分配给用户控件或窗口,然后创建复选框:

    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);
          }
        }
      }
    }
    
    公共部分类游戏窗口:窗口
    {
    公共游戏窗口()
    {
    初始化组件();
    this.DataContext=新的ScrabbleViewModel();
    创建复选框();
    }
    void createcheckbox()
    {
    
    对于(int y=0;yy你只能取出你放进去的东西。你有没有在你的方块上附加任何东西来标识它们的顺序?你可以找到方块的x/y位置,但这不一定是一种可靠或可维护的方法。你只能取出你放进去的东西。你有没有在方块上附加任何东西来标识它们的顺序?您可以找到正方形的x/y位置,但这不一定是一种可靠或可维护的方法。