c# – 如何在样式中设置绑定?
发布时间:2020-12-15 20:56:12 所属栏目:百科 来源:网络整理
导读:我对Xaml很新. 我正在学习UWP(通用 Windows平台),我有更多按钮,我想将他们的Background属性绑定到ViewModel的属性,该属性将在某些事件期间发生变化. 当我在XAML中的Buttons声明中绑定Background属性时,我实现了INotifyPropertyChanged并且一切正常(按钮的颜
我对Xaml很新.
我正在学习UWP(通用 Windows平台),我有更多按钮,我想将他们的Background属性绑定到ViewModel的属性,该属性将在某些事件期间发生变化. 当我在XAML中的Buttons声明中绑定Background属性时,我实现了INotifyPropertyChanged并且一切正常(按钮的颜色改变了): <Button Content="0" Grid.Column="0" Grid.Row="5" Background="{Binding ButtonColor,Source={StaticResource AppViewModel}}" Style="{StaticResource BasicButton}"/> StaticResource AppViewModel是App.xaml中的资源: <Application.Resources> <viewModel:AppViewModel x:Key="AppViewModel" /> </Application.Resources> 我不知道为App.xaml声明一个ViewModel有多好,但它是我找到的具有全局变量的解决方案(变量保存在viewModel中). 现在回到我的问题: <Style x:Key="BasicButton" TargetType="Button"> <Setter Property="Background" Value="{Binding ButtonColor,Source={StaticResource AppViewModel}}" /> </Style> 但是现在当颜色变量在运行应用程序期间发生变化时,UI不再更新. 我究竟做错了什么? 解决方法
经过更多搜索后,我发现了Jerry Nixon的视频:
http://blog.jerrynixon.com/2013/01/walkthrough-dynamically-skinning-your.html
看来因为我们在uwp / winrt中没有DynamicResource,所以我们必须做一个技巧: var frame = Window.Current.Content as Frame; frame.Navigate(frame.Content.GetType()); frame.GoBack(); 这就像在Windows窗体中使控件无效一样.它正在重绘UI本身.我不确定这是否有副作用,我将不得不挖掘更多.如果我找到了,我会回来的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |