Picker的动态ItemDisplayBinding
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Picker的动态ItemDisplayBinding相关的知识,希望对你有一定的参考价值。
Picker具有ItemDisplayBinding属性,可以使用此"{Binding PropertyA}"
语法设置要显示的Itemsource属性名称。但我有UI条件与更改属性名称有关,以动态显示。我有这样的房产。
public string GetPropertyToDisplay
{
If (ID == 1)
{
return "PropertyA";
}
else if (ID == 2)
{
return "PropertyB";
}
}
我该怎么办如果我想要这个属性绑定而不是"{Binding PropertyA}"
?
答案
如果ID属于ItemDisplayBinding属性之一。请按如下所示。
在其中创建一个PropertyDisplay
属性,这可用于显示Property或PropertyB,是否为其他Property。
属性类:包含属性,属性等。
public class Property
{
public int ID { set; get; }
public string Name { set; get; }
public string PropertyA { set; get; }
public string PropertyB { set; get; }
private string propertyDisplay = "Property";
public string PropertyDisplay
{
get
{
if (ID == 1)
{
return PropertyA;
}
else if (ID == 2)
{
return PropertyB;
}else
return propertyDisplay;
}
}
}
ViewModel类:ItemSource,设置测试数据如下:
public List<Property> listProperty { set; get; }
public ViewModel()
{
listProperty = new List<Property>();
listProperty.Add(new Property
{
ID = 1,
Name = "Alex1",
PropertyA = "10",
PropertyB = "Ejemplo"
});
listProperty.Add(new Property
{
ID = 2,
Name = "Alex2",
PropertyA = "20",
PropertyB = "Ejemplo"
});
}
Xaml:Picker
<Picker Title="select" TextColor="Aqua" ItemsSource="{Binding listProperty}" ItemDisplayBinding="{Binding PropertyDisplay}"/>
最终效果:
另一答案
使用转换器来解决它。首先,创建自己的转换器:
public class PikcerDisplayConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Model model = value as Model;
if(ID == 1)
{
return model.PropertyA;
}
return model.PropertyB;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
然后在你的xaml中使用这个转换器:
<ContentPage.Resources>
<ResourceDictionary>
<local:PikcerDisplayConverter x:Key="PikcerDisplayConverter"/>
</ResourceDictionary>
</ContentPage.Resources>
<Picker ItemsSource="{Binding ItemsSource}" ItemDisplayBinding="{Binding ., Converter={StaticResource PikcerDisplayConverter}}"/>
最后,每个选择器的项目将在显示之前进入此转换器。所以你可以选择你想要在那里展示的东西。
以上是关于Picker的动态ItemDisplayBinding的主要内容,如果未能解决你的问题,请参考以下文章
微信小程序之一:动态添加view(view包含picker,input)
uni-app 小程序 uni-data-picker 设置为 disabled