我想顯示具有詳細程度的數據,所以我使用TreeView,但每個細節都很短,所以我想使用WrapPanel(水平)來爲每行提供很多細節。在TreeView中使用WrapPanel
是這樣的:
這是一個未膨脹產品
這是一個擴展的項的頭部
信息1信息2信息3信息4
信息5 Info 6 Info 7
所以我試着定義TreeViewItem的模板,但我無法得到包裝wrappanel。當info的數據模板寬度爲100,TreeView 爲500時,我每行只有一個信息。我嘗試設置WrapPanel,ItemsWidth的寬度,但是沒有成功。
有什麼想法?
編輯:我終於得到這個與'更簡單'的解決方案。仍然看起來我們 必須定義WrapPanel的寬度,這使得解決方案不那麼通用。
這是我來到了解決方案:只需定義,在風格,ItemsPanel在 樹型視圖中使用:
<Style TargetType="TreeViewItem">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"
Width="520"
HorizontalAlignment="Stretch"
Margin="0"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
IsItemsHost="True"
/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
,我還讓不工作的解決方案在這裏,爲了完整起見。 (爲什麼不它的工作???)
<Style TargetType="TreeViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<Grid Margin="2" Width="500">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ContentPresenter Name="PART_Header"
ContentSource="Header"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
!!!! this is the wrapanel not wrapping
<ListBox Name="AllItems" Grid.Row="1" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ItemsPresenter />
</ListBox>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsExpanded" Value="False">
<Setter
TargetName="AllItems"
Property="Visibility"
Value="Collapsed" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
你看到WrapPanel了嗎?它有滾動條嗎?也許嘗試禁用它們。 – Shimmy 2012-01-09 03:04:57
是的,事實上,正如我說的那樣,除了它顯示的項目就好像面板是一個垂直StackPanel。它是水平居中,無論我改變。是的,它試圖設置水平滾動查看器禁用,並沒有奏效。 – GameAlchemist 2012-01-09 15:54:21
如果WrapPanel更寬,會發生什麼情況?嘗試設置一個邊框,並確保它確實是垂直的,或者只是如上所述的可用空間 – Shimmy 2012-01-09 16:04:33