如何创建和使用(颜色)框C#WPF的矩阵
我必须使用WPF App进行某种类型的游戏,其中包含一些颜色框矩阵(例如10×10)。 点击一些它必须消除自己和周围的盒子相同的颜色,如果有超过3,并在消除后这些框授予一些随机颜色。
我在WPF应用程序方面相当新,但我对C#编程有一些了解,我无法弄清楚应该从哪里开始。 对我来说最困难的部分是“产生”这个盒子并像矩阵一样使用它。
到目前为止,我发现了一些我认为会对我有帮助的项目 ,但并非如此。
有人可以从我可以开始的地方导航,这是最相关的方式。
谢谢。
ItemsControl + UniformGrid作为Panel是显示矩阵的不错选择
视图
代码隐藏
public partial class MainWindow : Window { List _board; public MainWindow() { InitializeComponent(); int rows = 10; int columns = 10; _board = new List (); for(int r = 0; r
您可以创建和使用更复杂的类型而不是Point并改进ItemTemplate以继续开发。 当前的ItemTemplate就是一个矩形
我使用代码隐藏进行演示,但在wpf MVVM中采用首选方法
编辑扩展示例
在大多数情况下,您不必直接使用UI元素
为了支持不同的颜色,我将创建一个自定义类
public class MatrixElement { private string _color; public MatrixElement(int x, int y) { X = x; Y = y; } public int X { get; private set; } public int Y { get; private set; } public string Color { get { return _color; } set { _color = value; if (ColorChanged != null) ColorChanged(this, EventArgs.Empty); } } public event EventHandler ColorChanged; }
窗口代码已相应更改
List _board; public MainWindow() { InitializeComponent(); int rows = 10; int columns = 10; _board = new List (); for (int r = 0; r < rows; r++) for (int c = 0; c < columns; c++) _board.Add(new MatrixElement(r, c){Color = "Green"}); Board.ItemsSource = _board; } private void CellClick(object sender, MouseButtonEventArgs e) { var border = (Border)sender; // each point has unique {X;Y} coordinates var point = (MatrixElement)border.Tag; // changing color in item view model // view is notified by binding point.Color = "#00BFFF"; }
ItemTemplate被修改了一下