当前位置: 首页 > 编程语言 > C#

如何在WPF-XAML中绑定背景色?Share

时间:2023-04-11 10:42:43 C#

如何在WPF/XAML中绑定背景颜色?我需要更改为以下代码,以便背景为红色,但我都没有尝试过:AltTexthttp://www.deviantsart.com/upload/1okq25l.pngXAML:CodeBehind:usingSystem.Windows;使用系统.ComponentModel;namespaceTestBackground88238{publicpartialclassWindow1:Window,INotifyPropertyChanged{#regionViewModelProperty:Backgroundprivatestring_background;publicstringBackground{get{return_background;}设置{_background=值;OnPropertyChanged})("endregion#regionViewModelProperty:Messageprivatestring_message;publicstringMessage{get{return_message;}set{_message=value;OnPropertyChanged("Message");}}#endregionpublicWindow1(){InitializeComponent();DataContext=this;Background="Red";Message="这是标题,背景应该是"+Background+"。";}#regionINotifiedPropertyBlockpubliceventPropertyChangedEventHandlerPropertyChanged;protectedvoidOnPropertyChanged(stringpropertyName){PropertyChangedEventHandlerhandler=PropertyChanged;if(handler!=null){handler(this,newPropertyChangedEventArgs(propertyName));}}#endregion}}更新1:我尝试了Aviad的答案,但似乎不起作用我可以使用x:Name手动执行此操作,如此处所示,但我希望能够将颜色绑定到INotifyPropertyChanged属性,我该怎么做?替代文本http://www.deviantsart.com/upload/7tp48m.pngXAML:代码隐藏:使用System.Windows;使用System.ComponentModel;使用System.Windows.Media;namespaceTestBackground88238{publicpartialclassWindow1:Window,INotifyPropertyChanged{#regionViewModelProperty:BackgroundprivateBrush_background;公共画笔背景{get{return_background;}设置{_background=值;OnPropertyChanged("背景");}}#endregion#regionViewModelProperty:消息私有字符串_message;publicstringMessage{get{return_message;}设置{_message=值;OnPropertyChanged("消息");}}#endregionpublicWindow1(){InitializeComponent();数据上下文=这个;背景=新的SolidColorBrush(Colors.Red);message="这是标题,背景应该是"+Background+"。";Message2.Background=newSolidColorBrush(Colors.Orange);}#regionINotifiedProperty块公共事件PropertyChangedEventHandlerPropertyChanged;protectedvoidOnPropertyChanged(stringpropertyName){PropertyChangedEventHandlerhandler=PropertyChanged;if(handler!=null){handler(this,newPropertyChangedEventArgs(propertyName));是System.Windows.Media.Brush而不是System.Drawing.Brush它们不兼容,你会得到绑定错误你需要使用的颜色枚举也不同System.Windows.Media.Colors.Aquamarine(类名是Colors)颜色)如有疑问,请使用Snoop并检查元素的背景属性是否存在绑定错误-或者只查看调试日志。Background属性需要一个Brush对象,而不是一个字符串。将属性的类型更改为Brush并对其进行初始化:Background=newSolidColorBrush(Colors.Red);在这里你有一个复制粘贴代码:.Windows.Media.Colors.Aqua);}else{returnnewSolidColorBrush(System.Windows.Media.Colors.Blue);}}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture){returnnull;}}我想通了,这只是一个命名冲突问题:如果你使用TheBackground而不是Background,它就像在第一个示例中发布的一样。属性Background会干扰Window属性背景。我建议阅读以下有关调试数据绑定的博客文章:http://beacosta.com/blog/?p=52对于这个特定问题:如果您查看编译器警告,您会注意到您的属性一直隐藏Window.Background属性(或Control或该属性定义的任何类)。xaml代码:c#代码:protectedoverridevoidOnNavigatedTo(NavigationEventArgse){CreateNewColorBrush();}privatevoidCreateNewColorBrush(){SolidColorBrushmy_brush=newSolidColorBrush(Color.FromArgb(255,255,215.Background2));消息=my_brush;这是一个用于Windows8商店应用程序的应用程序。尝试一下。祝你好运!只要您为窗口命名并在Binding的“Source”上使用此名称,您仍然可以使用“Background”作为属性名称。以上就是C#学习教程:如何在WPF/XAML中绑定背景色?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢