あなたは、各項目に使用するListBox
ためItemTemplate
を指定する必要があります。そのテンプレートの中でTextBlock
という属性を持つ必要があります。TextWrapping
の属性はWrap
に設定されています。
実際に、以下で解決する問題は、最初に描画されたときにTextBlock
が必要な領域に拡張されるという状況に遭遇することです。しかし、それ以降はサイズが変更されません。
サイズ変更可能な親にバインドすることによって()、すべてのものが自動的にサイズ変更されないことに注意してください。)このような変更を行うことができます。
私が設計段階で好きなことの1つは、アイテムのスタイルを特定の色にして物事を描く方法を決定することです。この例では
<Grid Background="DarkGreen">
<ListBox x:Name="lbChatHistory"
ItemsSource="{StaticResource Orders}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="DarkBlue"
Margin="10">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel VerticalAlignment="Bottom" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding CustomerName, FallbackValue=Unknown}"
FontSize="14"
Foreground="White"
TextWrapping="Wrap"
Width="{Binding ElementName=lbChatHistory, Path=ActualWidth}"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Background="DarkRed"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
![enter image description here](https://i.stack.imgur.com/1FGMn.png)
コードは、コントロールが明らかに性質を持つOrders
のリストにバインドされている完全性が、あなたのデータはもちろん異なります。
<Page.Resources>
<model:Orders x:Key="Orders">
<model:Order CustomerName="Alpha"
OrderId="997"
InProgress="True" />
<model:Order CustomerName="Beta"
OrderId="998"
InProgress="False" />
<model:Order CustomerName="Omega"
OrderId="999"
InProgress="True" />
<model:Order CustomerName="The rain in spain falls mainly"
OrderId="1000"
InProgress="False" />
</model:Orders>
</Page.Resources>
私はあなたが周囲のテキストブロックを色としてあなたの次の質問のために必要とされるListBoxItem HorizontalContentAlignment To Stretch Across Full Width of ListBoxを与えた答えをリモート似たこの答え。
ありがとうございます。私は1つの問題にぶつかっています。これは、データバインディングに関する私のやや新しい知識に由来しています。あなたが提供した提案されたListBox.ItemTemplateを追加すると、リストボックスの出力は "不明"のフォールバック値になります。 ListBox自体のItemSource Bindingは、Historyと呼ばれるObservableCollection of Stringsを指します。ですから、TextBlock自体のバインディングを別のものに変更する必要はありませんか?私の唯一の推測は、「歴史」の中で「歴史」を見つけることができないので、それが混乱しているということです。 – WannabeCoder
実際に、私はちょうどそれを考え出しました... 'Text =" {Binding} " '働いた。それが何をしているのか分かりませんので、私に見てもらうために何か新しいことがありますが、うまくいきました。 – WannabeCoder
@WannabeCoderバインディングは、バインドするプロパティがない文字列のリスト用です。 "バインディング"と言うだけで、パーサーには現在の 'DataContext'を反映させ、プロパティ名は指定しません。データを取得します。私の例では、将来、タイムスタンプ、フォント情報などのプロパティを持つ実際のインスタンスオブジェクトがある場所では、プロパティ名を追加する必要があります。このリストを作成し、サイズ変更の問題とバインディングを処理する方法を誰かに示すので、私の投稿に答えとしてマークしてください。どうも – OmegaMan