Попытка связать список списков для средства выбора внутри CollectionView. Не могу заставить его работать. Этикетка показывает информацию без проблем ... но что бы я ни пытался, не могу заставить сборщика что-либо показать. Всегда пусто!
XAML
<Frame BorderColor="DimGray">
<CollectionView
x:Name="StandardCollection"
ItemsSource="{Binding standardCol}"
IsGrouped="True"
>
<CollectionView.ItemsLayout>
<GridItemsLayout
Orientation="Horizontal"
Span="5"
/>
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal" WidthRequest="220" Padding=" 2,2,2,2">
<Label Text="{Binding lblTitle}" VerticalOptions="Center" />
<data:BindablePicker ItemsSource="{Binding picker}" SelectedIndex="0" VerticalOptions="CenterAndExpand" HorizontalOptions="EndAndExpand"/>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</Frame>
ViewModel
{
private StandardCalList _standardCol = new StandardCalList();
public StandardCalList standardCol { get
{ return _standardCol; }
set { _standardCol = value; OnPropertyChanged(); } }
public StandardCalculationViewModel()
{
}
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
Шаблон
public class Template : INotifyPropertyChanged
{
public string lblTitle { get; set; }
public ObservableCollection<string> picker { get; set; }
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
Заполнение списков
public class StandardCalList : ObservableCollection<Template>
{
public ObservableCollection<string> CableDiameter { get; set; }
public ObservableCollection<string> Voltage { get; set; }
public ObservableCollection<string> Distance { get; set; }
public ObservableCollection<string> LEDsCurrent { get; set; }
public ObservableCollection<string> CurrentRange { get; set; }
public StandardCalList()
{
InitList();
Add(new Template { lblTitle="1", picker = CableDiameter });
Add(new Template { lblTitle = "2", picker = Voltage });
Add(new Template { lblTitle = "3", picker = Distance });
Add(new Template { lblTitle = "4", picker = LEDsCurrent });
Add(new Template { lblTitle = "5", picker = CurrentRange });
}
private void InitList()
{
CableDiameter = new ObservableCollection<string>() {
"9 / 6.63mm2" ,
"10 / 5.26mm2" ,
"12 / 3.31mm2" ,
"15 / 1.65mm2" ,
"16 / 1.31mm2" ,
"18 / 0.823mm2" ,
"22 / 0.326mm2" ,
"24 / 0.205mm2" ,
"26 / 0.129mm2" };
Voltage = new ObservableCollection<string>() {
"12 V" ,
"24 V" ,
"46.25 V" ,
"47 V" ,
"48 V" };
Distance = new ObservableCollection<string>() {
"20m" ,
"50m" ,
"100m" ,
"250m" ,
"500m" };
LEDsCurrent = new ObservableCollection<string>() {
"350 mA" ,
"500 mA" ,
"650 mA" ,
"700 mA" ,
"750 mA" ,
"1000 mA" ,
"1050 mA" };
CurrentRange = new ObservableCollection<string>() {
"±50 mA" ,
"±100 mA" ,
"±300 mA" ,
"±500 mA" ,
"±1000 mA" ,
"±2000 mA" ,
"±4000 mA" };
}
}
Сказал добавить больше деталей, но не знаю точно, что сказать. Почему метка принимает текст, но средство выбора не привязывается к средству выбора ObservableList?