C#/ WPFでのItemsControlにバインド辞書
-
11-09-2019 - |
質問
私はItemsControlのに辞書からKeyValuePair要素をバインドしようとしています。 私の辞書には15個の要素を持っており、次のコードは、15件のTextBox私を示しています:
<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>
残念ながら(キーまたは値になります)任意のテキストボックスの内容なし。 任意のアイデア?
解決 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}" />
この記事を参照してください詳細は。 HTHます。
私たちはあなたのように定義された[キー、値]の両方で、辞書RowValuesと呼ばあるとしましょう[文字列、文字列]ます。
さて、この辞書の値ペアにバインドするために、次の操作を行うことができます
<ItemsControl ItemsSource="{Binding RowValues.Values}" >
テキスト(値)を表示するには、次のようにバインドすることができます:
<TextBlock Text="{Binding}"/>
所属していません StackOverflow