Вопрос

Я пытаюсь связать элементы 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}"/>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top