可以在鼠标单击事件中读取我的类,但无法修改它,为什么
本文关键字:修改 为什么 我的 鼠标 单击 事件 读取 | 更新日期: 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;