2011-04-26 34 views
1

我試圖設置一個包含三個項目的Accordion。前兩個展開到預先定義的高​​度,第三個展開以填充所有剩餘的空間;我認爲這很容易。問題設置Silverlight工具包的MaxHeight AccordionItem

這是我試圖做的一個虛擬版本。手風琴本身有紅色背景,每個項目都有自己的顏色。前兩個項目的大小適當擴大,但如果項目1或項目2打開,則項目3不再擴展以填充所有剩餘空間,但尺寸太小,會留下大塊紅色或太大的射門在屏幕的底部,黯然失色的紅色小條應該仍然存在。

這是一個錯誤?

我嘗試過使用兩個手風琴,其中一個帶有最大高度的兩個項目,第二個手風琴可以擴展以填充所有剩餘高度,但我無法設法正確地獲得佈局,對於Silverlight專家來說,猜測是顯而易見的。

有什麼辦法可以做到這一點?

下面是完整的代碼 - 也請注意,我嘗試使用,而不是height屬性maxHeight的,但只是導致accordionItem到總是是高度,不管它是否被擴大。

<UserControl x:Class="SilverlightApplication8.accordianDemo" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="400" d:DesignWidth="400" 
    xmlns:sdk2="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Layout.Toolkit"> 
    <Grid x:Name="LayoutRoot" Background="White"> 
     <sdk2:Accordion SelectionMode="ZeroOrMore" Background="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
      <sdk2:AccordionItem Header="Item 1" MaxHeight="150" Background="LightGoldenrodYellow"> 
       Hello World Row 1 
      </sdk2:AccordionItem> 
      <sdk2:AccordionItem Header="Item 2" MaxHeight="150" Background="LightGray"> 
       Hello World Row 2 
      </sdk2:AccordionItem> 
      <sdk2:AccordionItem Header="Item 3" Background="LightBlue"> 
       Hello World Row 3 
      </sdk2:AccordionItem> 
     </sdk2:Accordion> 
    </Grid> 
</UserControl> 

回答

1

嘗試在內容上設置MaxHeight。現在你的內容爲string嘗試使它成爲ContentControl

<sdk2:Accordion SelectionMode="ZeroOrMore" Background="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <sdk2:AccordionItem Header="Item 1" Background="LightGoldenrodYellow"> 
      <ContentControl Content="Hello World Row 1" MaxHeight="150" /> 
     </sdk2:AccordionItem> 
     <sdk2:AccordionItem Header="Item 2" Background="LightGray"> 
      <ContentControl Content="Hello World Row 2" MaxHeight="150" /> 
     </sdk2:AccordionItem> 
     <sdk2:AccordionItem Header="Item 3" Background="LightBlue"> 
      <ContentControl Content="Hello World Row 3" /> 
     </sdk2:AccordionItem> 
    </sdk2:Accordion> 
+0

這看起來很有前途,但沒有。在這種情況下,它忽略了最大高度,並且擴展了每個手風琴項目以填充所有可用空間 - 這比150大得多。我嘗試過使用更強大的內容,而不僅僅是一個字符串,並且發生同樣的事情。這只是我能想出的最簡單的例子來演示問題 – 2011-04-26 14:03:28

+0

對不起,這是因爲您的VerticalAlignment設置爲Stretch,您可能必須編寫自己的派生AccordionItem並自己處理Measure/Arrange。 – bendewey 2011-04-26 14:25:21

+0

哦,是的 - 嗯,也許我會改變我的用戶界面,所以我不希望*第一個地方的前兩個項目的固定高度:)謝謝,假設沒有人與(簡單)解決方法編鐘我會接受這個 – 2011-04-26 14:31:10

相關問題