hamid18 Ответов: 1

Привязка элементов списка в datatemplate в WPF


Привет, я пытаюсь выучить WPF. DataContext имеет значение ViewModel. В Itemscontrol я получаю список<string> с именем"MyList". По умолчанию datacontext datatemplate будет строковым. Поэтому я изменил datacontext TextBlock на Viemodel, чтобы получить доступ к свойству MyWidth, которое привязано к "ширине". На самом деле количество значений "MyWidth" равно количеству элементов в списке "MyList".MyWidth-это тоже список.Теперь я не знаю, как я могу получить все значения MyWidth.
Холодно, пожалуйста, помоги мне. Я буду вам очень благодарен, ребята.

Что я уже пробовал:

<ItemsControl ItemsSource="{Binding MyList}">
                   <ItemsControl.ItemsPanel>
                       <ItemsPanelTemplate>
                           <StackPanel Name="horizontalLabels" Orientation="Horizontal"  />

                       </ItemsPanelTemplate>
                   </ItemsControl.ItemsPanel>
                   <ItemsControl.ItemTemplate>
                       <DataTemplate>

                           <TextBlock     Text="{Binding}"

                                         Width="{Binding DataContext.LabelWidth, RelativeSource={RelativeSource AncestorType=ItemsControl},UpdateSourceTrigger=PropertyChanged}"
                                          Background="Red" Height="30"  FontSize="12"

                                           >
                           </TextBlock>

                       </DataTemplate>
                   </ItemsControl.ItemTemplate>
               </ItemsControl>


public void AddLabels(double parameters)
        { MyList.Add("dummy");
MyWidth.Add(30);
MyList.Add("dummy2");
MyWidth.Add(60);}

1 Ответов

Рейтинг:
9

Gerry Schmitz

Создать класс "строка" и "ширина".

Загрузить коллекцию (список<&ГТ; или ObserveableCollection на< и GT;) с экземплярами этого класса.

Установите ItemSource для этой коллекции.

Привязать TextBlock с "текст" и "ширина" для соответствующего свойства новой "строки и ширина" класса.

(То, что вы сейчас пытаетесь сделать с шириной, "не вычисляется").


hamid18

спасибо. Это выглядит просто, и я надеюсь, что это сработает.

hamid18

Все прошло гладко. Большое спасибо :)