我有一个包含两个usercontrols的窗口,一个带有listview的usercontrol和一个带有其他控件的usercontrol。
这样的事情:
+-------------------------------------------------+
| header stuff |
+---------------------------+---------------------+
| usercontrol with listview | another usercontrol |
+-------------------------------------------------+
| footer stuff |
+-------------------------------------------------+
问题:在低分辨率的屏幕上,只能看到3列中的2列,您需要滚动才能看到第三列。我想通过动态设置是否显示1,2或3列来避免水平滚动,具体取决于宽度。另一个问题是名字可以 非常长,因此列表视图中项目的宽度都与最长名称的宽度相同。
listview代码:
<ListView Name="lstContacts"
ItemsSource="{Binding Path=Contacts}"
IsSynchronizedWithCurrentItem="True"
ItemContainerStyle="{StaticResource RoundedItem}"
SelectionMode="Single"
HorizontalContentAlignment="Center"
VerticalAlignment="Top"
HorizontalAlignment="Stretch" >
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Margin="3">
<TextBlock FontWeight="Bold" FontSize="20" Text="{Binding Path=Identifier}" HorizontalAlignment="Center" />
<TextBlock FontSize="16" Text="{Binding Path=Name}" HorizontalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
关于如何解决这个问题的任何想法?
也许列表视图是一个糟糕的选择?
感谢。
答案 0 :(得分:0)
您可以使用WrapPanel
作为ItemsPanel
:
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
请注意,没有本机虚拟化WrapPanel,因此对于大量项目而言,这不会很好。
答案 1 :(得分:0)
因为你的名字很长,你可以: 1-使用具有文本包装和最大/最小高度的文本框。 2-减少名称的字体大小。 3-将名称放在ViewBox中,以便它们始终适合。 (也包装)