2009-07-28 75 views
1

即使處於摺疊狀態,我如何設置擴展器來顯示它所包含的某些內容?我有以下代碼片段,任何人都可以指出對此代碼的更改嗎?如何在WPF中設置擴展器控件的最小尺寸?

<Window x:Class="UI2.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="358" Width="300"> 
<TabControl> 
    <TabItem Header="Buga Buga"> 
     <StackPanel> 
      <Expander ClipToBounds="False"> 
       <ListBox Name="lstProcesses" 
         MinHeight="60"> 
       </ListBox> 
      </Expander> 
     </StackPanel> 
    </TabItem> 
</TabControl> 

感謝

+0

你喜歡在擴展頭中顯示該內容嗎? – 2009-07-28 05:53:16

回答

2

它聽起來並不像擴展器,你應該使用此方案的控制。擴展有一個頭和內容,如:

<Expander Header="Visible all the time"> 
    <TextBlock Text="Hidden until expanded" /> 
</Expander> 

它像你想的是被設置爲一個特定的高度一些時間控制的聲音,我和在其他時間奔放。

我認爲你可以通過綁定一個ToggleButton(Expander在內部使用)來達到MaxHeight屬性ListBox

嘗試這樣的事情在Kaxaml

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=System"> 

    <Page.Resources> 
    <!-- A way of getting some test data in Kaxaml --> 
    <ObjectDataProvider x:Key="Processes" 
         MethodName="GetProcesses" 
         ObjectType="{x:Type diag:Process}" /> 
    </Page.Resources> 

    <StackPanel> 
    <ToggleButton Name="Expand" Content="Expand" /> 
    <ListBox Name="lstProcesses" 
      ItemsSource="{Binding Source={StaticResource Processes}}" 
      DisplayMemberPath="ProcessName"> 
     <ListBox.Style> 
     <Style TargetType="ListBox"> 
      <Style.Triggers> 
      <DataTrigger Binding="{Binding ElementName=Expand, Path=IsChecked}" 
         Value="False"> 
       <Setter Property="MaxHeight" Value="60" /> 
      </DataTrigger> 
      </Style.Triggers> 
     </Style> 
     </ListBox.Style> 
    </ListBox> 
    </StackPanel> 
</Page> 
0

下面是一個簡單的例子如何倒塌的文本(標題)所選項目在列表框中包含的擴展器內:

<Expander ClipToBounds="False"> 
    <ListBox Name="lstProcesses" 
       MinHeight="60"> 
    </ListBox> 
    <Expander.Header> 
     <TextBlock Text="{Binding SelectedItem, ElementName=lstProcesses}"/> 
    </Expander.Header> 
</Expander>