可以在鼠标单击事件中读取我的类,但无法修改它,为什么

本文关键字:修改 为什么 我的 鼠标 单击 事件 读取 | 更新日期: 2023-09-27 18:30:16

>我有一些问题,我只能在我的 Mainwindow() 方法中更新我的 gui。并且无法真正弄清楚为什么它在事件中无法更改 gui。我也使用绑定和视图模型类。

所以当我走出主窗口时,我的绑定似乎停止工作?

任何想法可能出了什么问题?

谢谢!

public partial class MainWindow : Window
{

    public ObservableCollection<ChessPiece> ItemX { get; set; }
    public MainWindow()
    {
       ItemX = new ObservableCollection<Chess>();
       InitializeComponent();
       DataContext = ItemX ;
       ItemX.Add(new Chess() { PosX = 0, PosY = 0, Type_ = Piece.Farmer, Player_ = PiecePlayer.Black });
       ItemX.Add(new Chess() { PosX = 0, PosY = 1, Type_ = Piece.Farmer, Player_ = Player.Black });

  ItemX.ElementAt(1).PosX = 5; //This works perfect, my GUI changes! 
}      
 public void ChessBoardClick(object sender, MouseButtonEventArgs e)
    {
       ItemX.ElementAt(0).PosX = 3; //Wont work, but the values inside ItemX changes. 

    }

可以在鼠标单击事件中读取我的类,但无法修改它,为什么

目前您的 GUI 变化不大,而是从右开始......您没有MainWindow方法,而是MainWindow构造函数。只有在该构造函数完成后,UI 才会完成更新,此时PosX已经是 5

若要使 UI 对属性更改做出反应,Chess类需要实现 INotifyPropertyChanged ,以便在更改 PosX 属性时触发事件。

作为旁注,使用集合的索引器比使用ElementAt方法更习惯,例如

ItemX[0].PosX = 3;