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

具有多个数据模板的列表框-选定项目的样式Share

时间:2023-04-10 19:43:59 C#

ListBoxwithMultipleDataTemplates-StylingforSelectedItems列表框。下面是我的代码:items...DatatemplatewithConvertor:items...我在应用栏中有一个按钮,单击该按钮后,我以编程方式设置NewDataTemplate,它将列表框中的2个项目颜色更改为绿色。列表框项目选择器样式:这将在我们选择项目时应用样式。现在,当我单击列表框中的某个项目(意味着该项目突出显示)时,这种样式在我的DefaultDataTemplate上运行良好,但是当我设置NewDataTemplate时,该样式根本不显示。我怎么解决这个问题?注意:我使用的是WindowsPhone8应用程序。编辑1publicclassBackgroundConvertor:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){SolidColorBrushsolidColorBrush=null;if(value!=null){MyObjectobj=valueasMyObject;if(parameter!=null){if(obj.IsCorrect==1&¶meter.ToString()=="0"){solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)201,(byte)235,(字节)242));//蓝色}elseif(obj.IsCorrect==1&¶meter.ToString()=="1"){solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)201,(byte)242,(byte)169));//绿色}else{solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)227,(byte)232,(byte)240));//灰色.}}elseif(obj.IsCorrect==1){solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)201,(byte)242,(byte)169));//绿色}else{solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)227,(byte)232,(byte)240));//灰色。}}返回solidColorBrush;}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture){returnnull;}}编辑2这是我的MyObject类:publicclassMyObject{privatebyteisCorrect;公共字节IsCorrect{得到{返回isCorrect;}set{if(value!=this.isCorrect){isCorrect=value;}}}}下面代码中的第二个DataTemplate有几个问题:items...查看上面的代码:Background="{BindingConverter={StaticResourceBackgroundConvertor}}"你没有提供任何路径。所以你的转换器不会得到任何输入值。此外,您应该在上面的绑定中指定参数。看下面的例子:首先在ViewModel中声明一个属性如下:privateMyObjectmyBackground;publicMyObjectMyBackground{get{返回myBackground;}设置{myBackground=值;NotifyPropertyChanged("MyBackground");}}在更改DataTemplate之前或在ViewModel的构造函数中填充MyBackground中的值。在您的DataTemplate中:Margin="0,2,0,0"VerticalAlignment="Stretch"Horizo??ntalAlignment="Stretch">items...您也可以使用您在上面的代码中指定的转换器。注意:上面的示例代码尚未经过测试。如果有任何错误,请尝试修复它们。如果您有任何问题,请随时提问。更新:您不需要对Answer类进行任何更改。在您的ViewModel中,只需像这样声明属性:privateAnswermyBackground;publicAnswerMyBackground{get{returnmyBackground;}设置{myBackground=值;OnPropertyChanged("我的背景");使用我之前在对XAML的回答中提到的内容。用下面的代码更改你的转换器:以上是C#学习教程:多数据模板列表框-选中项的样式分享所有内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注publicclassBackgroundConvertor:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){SolidColorBrushsolidColorBrush=null;if(value!=null){Answeranswer=(Answer)value;if(parameter!=null){if(answer.IsCorrect==1&¶meter.ToString()=="0"){solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)201,(byte)235,(字节)242));//蓝色}elseif(answer.IsCorrect==1&¶meter.ToString()=="1"){solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)201,(byte)242,(byte)169));//绿色}else{solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)227,(byte)232,(byte)240));//灰色.}}elseif(answer.IsCorrect==1){solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)201,(byte)242,(byte)169));//绿色}else{solidColorBrush=newSolidColorBrush(Color.FromArgb((byte)255,(byte)227,(byte)232,(byte)240));//灰色。}}返回solidColorBrush;}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture){returnnull;联系管理员删除。如需转载请注明出处: