2009-09-04 21 views
3

wff ListViewに2つのExpanderが入っています。エクスパンダが展開すると、リストビューはコンテンツのためのスペースを確保します。彼らが崩壊すると、リストビューはその余分なスペースを「取り戻し」ません。どこでもHorizontalAlignmentVerticalAlignmentStretchを設定しました。これを行う方法はありますか? DetailsおよびChart列にはエクスパンダが含まれています。以下のコードを参照してください。ありがとう。リストビュー内のエクスパンダが折りたたまれているときにWPFリストビューが折りたたまれない

ここ

<Window.Resources> 

    <DataTemplate x:Key="StockPriceChangeCell"> 
     <StackPanel Orientation="Horizontal"> 
      <Label Name="stockPriceChangeValue" Foreground="{Binding StockPriceChangeColor}" Content="{Binding StockPriceChange}" Width="Auto"></Label> 
     </StackPanel> 
    </DataTemplate> 

    <DataTemplate x:Key="DetailsCell"> 
     <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
      <Expander Header="Details..." BorderBrush="DarkBlue" Width="200" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
       <Grid Name="stockDetailGrid" Background="Beige" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ShowGridLines="False"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="6*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="6*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="6*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="6*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="6*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="6*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="6*" /> 
         <RowDefinition Height="96*" /> 
         <RowDefinition Height="6*" /> 
         <RowDefinition Height="96*" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto" /> 
         <ColumnDefinition Width="Auto" /> 
        </Grid.ColumnDefinitions> 
        <Label Grid.Row="0" Grid.Column="0" Name="previousClosePrompt" FontWeight="Bold" FontSize="12" Height="28" Width="Auto">Prev Close:</Label> 
        <Label Grid.Row="0" Grid.Column="1" Name="previousCloseValue" FontWeight="Bold" FontSize="12" Height="28" Width="Auto" Content="{Binding StockDetails.PreviousClose}"></Label> 
        <Separator Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator3" Margin="0,2" /> 
        <Label Grid.Row="2" Grid.Column="0" Name="openPricePrompt" FontWeight="Bold" FontSize="12" Height="28">Open:</Label> 
        <Label Grid.Row="2" Grid.Column="1" Name="openPriceValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.OpeningPrice}"></Label> 
        <Separator Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator5" Margin="0,2" /> 
        <Label Grid.Row="4" Grid.Column="0" Name="yearlyTargetEstimatePrompt" FontWeight="Bold" FontSize="12" Height="28">1y Target Est:</Label> 
        <Label Grid.Row="4" Grid.Column="1" Name="yearlyTargetEstimateValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.YearTargetEstimate}"></Label> 
        <Separator Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator6" Margin="0,2" /> 
        <Label Grid.Row="6" Grid.Column="0" Name="stockDaysRangePrompt" FontWeight="Bold" FontSize="12" Height="28">Day's Range:</Label> 
        <Label Grid.Row="6" Grid.Column="1" Name="stockDaysRangeValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.DaysRange}"></Label> 
        <Separator Grid.Row="7" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator7" Margin="0,2" /> 
        <Label Grid.Row="8" Grid.Column="0" Name="stockYearsRangePrompt" FontWeight="Bold" FontSize="12" Height="28">52wk Range:</Label> 
        <Label Grid.Row="8" Grid.Column="1" Name="stockYearsRangeValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.YearsRange}"></Label> 
        <Separator Grid.Row="9" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator8" Margin="0,2" /> 

        <Label Grid.Row="10" Grid.Column="0" Name="averageVolumePrompt" FontWeight="Bold" FontSize="12" Height="28">Avg Vol (3m):</Label> 
        <Label Grid.Row="10" Grid.Column="1" Name="averageVolumeValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.AverageVolume}"></Label> 
        <Separator Grid.Row="11" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator9" Margin="0,2" /> 
        <Label Grid.Row="12" Grid.Column="0" Name="marketCapPrompt" FontWeight="Bold" FontSize="12" Height="28">Market Cap:</Label> 
        <Label Grid.Row="12" Grid.Column="1" Name="marketCapValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.MarketCap}"></Label> 
        <Separator Grid.Row="13" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator10" Margin="0,2" /> 
        <Label Grid.Row="14" Grid.Column="0" Name="priceEarningRatioPrompt" FontWeight="Bold" FontSize="12" Height="28">P/E (ttm):</Label> 
        <Label Grid.Row="14" Grid.Column="1" Name="priceEarningRatioValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.PriceEarningsRatio}"></Label> 
        <Separator Grid.Row="15" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator11" Margin="0,2" /> 
        <Label Grid.Row="16" Grid.Column="0" Name="earningsPerSharePrompt" FontWeight="Bold" FontSize="12" Height="28">EPS (ttm):</Label> 
        <Label Grid.Row="16" Grid.Column="1" Name="earningsPerShareValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.EarningsPerShare}"></Label> 
        <Separator Grid.Row="17" Grid.Column="0" Grid.ColumnSpan="2" Name="stockSeparator12" Margin="0,2" /> 
        <Label Grid.Row="18" Grid.Column="0" Name="dividendYieldPrompt" FontWeight="Bold" FontSize="12" Height="28">Div &amp; Yield:</Label> 
        <Label Grid.Row="18" Grid.Column="1" Name="dividendYieldValue" FontWeight="Bold" FontSize="12" Height="28" Content="{Binding StockDetails.DividendYield}"></Label> 
       </Grid> 
      </Expander> 
     </StackPanel> 
    </DataTemplate> 

    <DataTemplate x:Key="ChartCell"> 
     <StackPanel> 
      <Expander Header="Chart..." BorderBrush="DarkBlue" Width="200" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
       <Image Name="stockGraph" Stretch="None" Source="{Binding StockChart}"/> 
      </Expander> 
     </StackPanel> 
    </DataTemplate> 
</Window.Resources> 

でここにリストビューです:

   <TabItem Name="myStocksTab" Header="My Stocks" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
        <StackPanel Name="myStocksTabContainerPanel" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
         <Label Name="myStocksPrompt" Foreground="GhostWhite" Background="DarkBlue" FontSize="16" FontWeight="Bold">My Stocks</Label> 
          <ListView Name="stocksUIList" ItemsSource="{Binding}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" VerticalContentAlignment="Stretch"> 
           <ListView.View> 
            <GridView> 
             <GridViewColumn Header="Action" CellTemplate="{StaticResource ButtonsCell}" Width="Auto"/> 
             <GridViewColumn Header="Company/Stock Symbol" Width="Auto" DisplayMemberBinding="{Binding CompanyName}"/> 
             <GridViewColumn Header="Last Trade" Width="Auto" DisplayMemberBinding="{Binding LastTrade}"/> 
             <GridViewColumn Header="Trade Time" Width="Auto" DisplayMemberBinding="{Binding StockDetails.TradeTime}"/> 
             <GridViewColumn Header="Change" CellTemplate="{StaticResource StockPriceChangeCell}"/> 
             <GridViewColumn Header="Volume" Width="Auto" DisplayMemberBinding="{Binding TradingVolume}"/> 
             <GridViewColumn Header="Details" CellTemplate="{StaticResource DetailsCell}" Width="215"/> 
             <GridViewColumn Header="Chart" CellTemplate="{StaticResource ChartCell}" Width="215"/> 
            </GridView> 
           </ListView.View> 
          </ListView> 
         <Button Name="addStock" FontSize="14" FontWeight="Bold" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" Click="AddCompanyStock">Add Stock...</Button> 
        </StackPanel> 

答えて

0

リストビューでのソートのレイアウトバグがあるかもしれないようですね。いずれかのエキスパンダーのCollapsedイベントでListViewでInvalidateVisual()を呼び出そうとしましたか?それはトリックを行う可能性があります。

+0

同じ問題が発生しましたが、InvalidateVisual()は効果がないようです。 – Squirrel

1

これは古いポストだと知っていますが、私はこの問題の解決策を探していて、私の解決策でそれを更新したいと考えていました。

ListView with nested Expander not collapsingは基本的に私は項目テンプレートでパンダとリストビューを使用していました:

は、いくつかの検索後、私はここで見つける溶液を用いて、それを修正することができました。エキスパンダーを折りたたんでもサイズが適切に変更されませんでした。また、エキスパンダーのコンテンツがListViewより大きい場合、スクロールは正しく機能しません。

解決方法は、単にListViewをItemsControlに置き換えて、ItemsControlをScrollViewer内に置くことでした。

関連する問題