我想獲得一個窗口類似聊天窗口,其中的文本項目列表繪製。該窗口應該可以調整大小,並且每個文本項目都應該包裝,如果它不符合一行。限制一個ListView的寬度爲父強制子文本包裝
我到目前爲止有:
MessageItem
- 用戶控制,多的TextBlock在邊境
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<Border BorderBrush="Silver" BorderThickness="1" Height="Auto" HorizontalAlignment="Left" Margin="0,10,0,10" Name="messageContainer" VerticalAlignment="Top" Width="Auto">
<TextBlock Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="messageContent" VerticalAlignment="Stretch" Width="Auto" Text="This is some longer text. Wow that wasn't as long as I thought." TextWrapping="Wrap" Padding="10" />
</Border>
</Grid>
MessageBox
- 與持有MessageItems
<Grid Name="messageGrid" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<ScrollViewer VerticalScrollBarVisibility="Auto">
<!--<StackPanel Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="messagePanel" VerticalAlignment="Stretch" Width="Auto">
</StackPanel> -->
<ListView HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<local:MessageItem></local:MessageItem>
</ListView>
</ScrollViewer>
</Grid>
一個ListView用戶控件問題:
如果我使用th e將StackPanel註釋掉以保留MessageItems,它將正確收縮MessageItem(並導致文本換行)。如果我使用ListView,它不會縮小。
我已經或多或少知道了爲什麼從研究,但我一直沒能弄清楚如何解決它。據我可以告訴我需要重寫MeasureOverride和/或ArrangeOverride,但我太新了WPF知道我正在做的WTF。 (rimshot)
哇,這比我預期的方式更容易。至於ScrollViewer:Resize窗口,所以ListView比窗口大 - >「嘿滾動條沒有出現」 - > Toolbox - > ScrolViewer - >「這正是我需要的! :)就像我說的我是新來的WPF:P – carpat