Привязка словаря к ItemsControl в C#/WPF
-
11-09-2019 - |
Вопрос
Я пытаюсь связать элементы KeyValuePair из словаря с ItemsControl.В моем словаре 15 элементов, а следующий код показывает 15 текстовых полей:
<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 (которое было бы ключом или значением).Есть идеи?
Решение 2
Я решил это, используя эту строку:
<TextBox Text="{Binding Value, Mode=OneWay}"></TextBox>
Код на http://www.dev102.com/2008/03/07/binding-a-wpf-control-to-a-dictionary/ кажется, не работает.
Другие советы
Возможно, попробуйте привязать непосредственно к значениям словаря:
ItemsSource="{Binding Persons.Values}"
Если я правильно понимаю ваш XAML, каждый объект в словаре имеет поле «Текст», к которому вы пытаетесь привязаться.Если да, и вы вносите вышеуказанные изменения, вам также необходимо изменить свой DataTemplate:
<TextBox Text="{Binding Text}" />
Видеть Эта статья для получения дополнительной информации.ХТХ.
Допустим, у вас есть словарь под названием RowValues, в котором оба [ключ, значение] определены как [строка, строка].
Теперь, чтобы привязаться к паре значений этого словаря, вы можете сделать следующее:
<ItemsControl ItemsSource="{Binding RowValues.Values}" >
Чтобы отобразить текст (значение), вы можете привязать его как:
<TextBlock Text="{Binding}"/>