2009-07-08 5 views
1

Я пытаюсь связать элементы KeyValuePair из словаря в элемент управления. Мой словарь имеет 15 элементов и следующий код показывает мне 15 TextBoxes:Связать словарь с ItemsControl в C#/WPF

<WrapPanel Name="PersonsWrapPanel" Grid.Row="0"> 
    <ItemsControl ItemsSource="{Binding Persons}" > 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapPanel Orientation="Horizontal" Width="auto"> 
       </WrapPanel> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
        <TextBox Text="{Binding Value.Text}"></TextBox> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
</WrapPanel> 

К сожалению, без какого-либо содержания TextBox (который был бы ключ или значение). Любые идеи?

ответ

3

Возможно попробовать привязки непосредственно к значениям словаря:

ItemsSource="{Binding Persons.Values}" 

Если я понять ваш XAML должным образом, каждый объект в словаре имеет поле под названием «Текст», к которому вы пытаетесь связать. Если это так и вы сделаете вышеуказанные изменения, вам нужно будет изменить DataTemplate, а также:

<TextBox Text="{Binding Text}" /> 

Смотрите this article для получения дополнительной информации. НТН.

0

Скажем, у вас есть словарь под названием RowValues, причем оба параметра [ключ, значение] определены как [строка, строка].

Теперь, чтобы связать с пары значений этого словаря, вы можете сделать следующее:

<ItemsControl ItemsSource="{Binding RowValues.Values}" > 

Для отображения текста (Value), вы можете связать как:

<TextBlock Text="{Binding}"/> 
Смежные вопросы