我有一些问题,我只能在Mainwindow()方法中更新我的gui。并且无法弄清楚为什么它在一个事件中不起作用来改变gui。我也使用绑定和viewmodel类。
因此,当我走出主窗口时,似乎我的绑定停止工作了?
任何想法都可能出错?
谢谢!
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.
}
答案 0 :(得分:1)
目前您的GUI不会更改,因为正确启动 ...您没有MainWindow
方法,你有一个MainWindow
构造函数。 UI只会在构造函数完成后完成更新,到时PosX
已经为5。
要让您的UI对属性更改做出反应,您的Chess
类需要实现INotifyPropertyChanged
,以便在更改PosX
属性时触发事件。
作为旁注,使用集合的索引器比使用ElementAt
方法更为惯用,例如
ItemX[0].PosX = 3;