我正在开发一个高性能的 BlackJack 程序。该应用程序主要用于展示,但有时出于性能原因我想禁用所有界面更新。当我更新 UI(自动 100% 绑定)时,我每秒可以处理约 600 张牌,而无需更新表格和控件,我每秒可以处理 22,000 多张牌。
我正在玩弄禁用 UI 更新的简单方法。我发现的唯一方法是将我的 BlackJackTable UserControls 的 DataContext 设置为空白表 ViewModel 并允许真实表 ViewModel 执行所有计算。如果我想再次查看发生了什么,这会在将 DataContexts 设置回真实表 ViewModel 时产生问题。
所以,总而言之......有没有一种简单的方法可以暂停对象上的所有绑定?删除可见性和禁用 (IsEnabled = false) 对性能没有帮助。有什么建议可以正确地做到这一点吗?
您不需要阅读以下内容,但如果您好奇(或有解决方案),这就是我一直在做的事情:
private void FastModeChk_Checked(object sender, RoutedEventArgs e) {
if (TableViewModel.GameStatisticsVM.CardsDealt > 0) {
BlackJackTable.DataContext = BlankTVM;
DealerControlsTabItem.DataContext = BlankTVM;
PlayerControlsTabItem.DataContext = BlankTVM.CurrentPlayerHandVM;
DebugLogTabItem.DataContext = BlankTVM.LoggingVM;
}
}
private void FastModeChk_Unchecked(object sender, RoutedEventArgs e) {
BlackJackTable.DataContext = TableViewModel;
DealerControlsTabItem.DataContext = TableViewModel;
PlayerControlsTabItem.DataContext = TableViewModel.CurrentPlayerHandVM;
DebugLogTabItem.DataContext = TableViewModel.LoggingVM;
}
PlayerControlsTabItem 不会一直从 CurrentPlayerHandVM 拉出。我正在调用 OnPropertyChanged,如果没有选中该框,一切都会很好。由于某种原因,此代码不起作用。