WPF按钮连续点击两次出现异常Windows7样式栏如何修复
问题根因
异常出现的Win7风格栏是WPF Frame 控件内置的默认导航UI。首次点击给Frame.Content赋值时,控件未触发导航UI初始化,所以显示正常;连续重复赋值新内容时,Frame会自动启用内置导航条,该导航条使用系统原生样式,和你自定义的窗口样式不兼容,就会出现异常显示。
修复方法
快速修复(适配当前业务场景)
你的代码里只用Frame承载页面内容,不需要前进/后退导航功能,直接在XAML中给Frame控件追加两个属性,彻底禁用内置导航UI即可,修改后无论点击多少次按钮都不会出现异常样式栏:
<Frame x:Name="Symbols" Margin="0,50,0,0" NavigationUIVisibility="Hidden" JournalOwnership="OwnsJournal"/>
优化建议(减少不必要的性能开销)
如果不需要每次点击都生成全新的valuteSymbols实例,可以提前缓存页面实例,点击时判断当前已加载内容再决定是否赋值,避免重复触发控件导航逻辑:
- 在MainWindow类中声明私有字段缓存页面实例
private readonly valuteSymbols _valuteSymbolsPage = new valuteSymbols(); - 修改按钮点击事件逻辑
private void Valute(object sender, RoutedEventArgs e) { if (Symbols.Content != _valuteSymbolsPage) { Symbols.Content = _valuteSymbolsPage; } }
如果业务要求每次点击都加载全新初始化的
valuteSymbols实例,仅使用上述快速修复的XAML配置即可完全解决异常栏问题。
内容的提问来源于stack exchange,提问作者user16223274
相关产品推荐
相关产品推荐

