当我将标签添加到列表时,尝试从标签控制背景颜色
本文关键字:标签 控制 背景 颜色 添加 列表 | 更新日期: 2023-09-27 18:34:38
我正在尝试通过下面的代码控制背景颜色,但颜色没有像我想要的那样变成黑色。
我将列表中的公共颜色加载为透明,当它发现我想将其设置为黑色但似乎不起作用时。有什么线索我哪里出错了吗?
XAML:
<Label BackgroundColor="{Binding thebackgroundColor}" />
法典:
public class pubClass
{
public Color thebackgroundColor { get; set; }
}
async void loadOurItem ()
{
ourList.Add (new pubClass ()
{
thebackgroundColor = Color.Transparent
});
}
protected override void OnAppearing()
{
loadOurItem ();
var theClass = new pubClass ();
if (theClass.thebackgroundColor != null) {
theClass.thebackgroundColor = Color.Black;
}
}
}
更新:
private void NotifyPropertyChanged(theClass.thebackgroundColor)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(theClass.thebackgroundColor = Color.Black));
}
}
听起来您想通过调整模型来更新您的ListView
项目,尽管您在此过程中遇到了困难并且有点困惑?
请尝试下面的示例,这是一个创建MyPubClass
ObservableCollection
的简单示例。
屏幕底部的按钮将显示如何通过修改每个项目并将这些更改反映在ListView
上来直接更新模型。
在此示例中,每个项目只是循环显示颜色Red
、Green
和Blue
。
在MyViewCell
类中,这是您最有可能创建类似于 XAML
的东西,通过实现BindableProperty
的模型的 TheBackgroundColor
属性绑定到Labels
的BackgroundColor
属性。
例:-
StackLayout objStackLayout = new StackLayout()
{
Orientation = StackOrientation.Vertical,
};
ListView objListView = new ListView();
objStackLayout.Children.Add(objListView);
objListView.ItemTemplate = new DataTemplate(typeof(MyViewCell));
ObservableCollection<MyPubClass> objItems = new ObservableCollection<MyPubClass>();
objListView.ItemsSource = objItems;
objItems.Add(new MyPubClass(Color.Red));
objItems.Add(new MyPubClass(Color.Green));
objItems.Add(new MyPubClass(Color.Blue));
Button objButton1 = new Button()
{
Text = "Change Colors"
};
objButton1.Clicked+=((o2,e2)=>
{
foreach (MyPubClass objItem in objItems)
{
if (objItem.TheBackgroundColor == Color.Red)
{
objItem.TheBackgroundColor = Color.Green;
}
else if (objItem.TheBackgroundColor == Color.Green)
{
objItem.TheBackgroundColor = Color.Blue;
}
else if (objItem.TheBackgroundColor == Color.Blue)
{
objItem.TheBackgroundColor = Color.Red;
}
}
});
objStackLayout.Children.Add(objButton1);
自定义视图单元格:-
public class MyViewCell
: ViewCell
{
public MyViewCell()
{
Label objLabel = new Label();
objLabel.Text = "Hello";
objLabel.SetBinding(Label.BackgroundColorProperty, "TheBackgroundColor");
this.View = objLabel;
}
}
支持类:-
public class MyPubClass
: Xamarin.Forms.View
{
public static readonly BindableProperty TheBackgroundColorProperty = BindableProperty.Create<MyPubClass, Color>(p => p.TheBackgroundColor, default(Color));
public Color TheBackgroundColor
{
get { return (Color)GetValue(TheBackgroundColorProperty); }
set { SetValue(TheBackgroundColorProperty, value); }
}
public MyPubClass(Color pobjColor)
{
this.TheBackgroundColor = pobjColor;
}
}