locked
AccordionItemにMaxHeightを指定するとAccordionの表示が崩れる RRS feed

  • 質問

  • <UserControl
    	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"
    	xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"
    	xmlns:local="clr-namespace:AccordionSampleScreens"
    	mc:Ignorable="d"
    	x:Class="AccordionSampleScreens.画面_1"
    	Width="640" Height="480">
    
    	<Grid x:Name="LayoutRoot" Background="White">
    		<toolkit:Accordion x:Name="accTest" 
        SelectionMode="OneOrMore"
          HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch">
    <toolkit:AccordionItem x:Name="aiTest1" Header="Header" Content="Content1" IsSelected="True"/> <toolkit:AccordionItem x:Name="aiTest2" MaxHeight="150" Header="Header" Content="Content1" IsSelected="False"/> <toolkit:AccordionItem x:Name="aiTest3" MaxHeight="150" Header="Header" Content="Content1" IsSelected="False"/> </toolkit:Accordion> </Grid> </UserControl>

    まず下記の手順で実行しました。

    1.Expression Blend 4で上記のXAMLを記述し実行する。

    2.AccordionItemの2つめと3つめは、閉じている状態で表示される。

    3.2つめの閉じているAccordionItemをクリックし展開させる。

     

    この際、2つ目のAccordionItemにはMaxHeightが指定されているので指定サイズ以上には広がりません。

    ここまでは想定通りなのですが、

    3つめのAccordionItemが、Accordionの底部に張り付いている状態になってほしいところ

    2つめのAccordionItemに引きずられAccordionの底部に張り付きません。

     

    またこの状態で、1つめのAccordionItemを一旦閉じ、再度展開すると、今度は3つめのAccordionItemが

    隠れてしまう事象が発生します。

     

    Maxheightを指定しない場合の動作と、指定した場合の動作が異なるのですが、これを同じような挙動にすることは

    可能なのでしょうか。ご教授のほど宜しくお願い致します。


    開発環境

    Expression Blend 4  ver 4.0.20901.0 (SP1導入済)

    Silverlight 4.0.60310.0

    Silverlight 4 SDK 日本語 ver 4.0.50826.0

    Silverlight 4 Toolkit April 2010 ver4.0.40413.2020


    2011年6月3日 5:38

回答

  • こんにちは。

    やりたいことが完全に理解できているか微妙かもなのですが、

    SelectionMode="OneOrMore"の状態で、
    Accordionのサイズは変更せずに、
    特定のAccordionItemのMaxHeightを指定したいということですよね。

    結論から言うと無理だと思います。
    Accordionのソースはざっとしか見てませんが、ItemsPanelはStackPanelしか受け付けないようですし、
    そのStackPanelのVerticalAlignmentもprivateなコードでTopに固定されるようです。

    もともとAccordionは

    Components in the Preview Quality Band
    に含まれており、

    >While in the Preview Quality Band, these components may have a moderate number of breaking API or behavior changes in response to customer feedback and as we learn more about how they will be used.
    >Customers are likely to encounter bugs and functionality issues for non-mainline scenarios.
    (上記リンクの引用)


    とはっきり書かれていますので
    「こういう使い方がしたい」というフィードバックをすると良いと思います。
    目的がそういうことなので。

    # ToolKitのソースはダウンロードできますので、ご自分でも見てみることをお勧めします。
    # 勉強になると思います。

    以上、参考になりましたら幸いです。

    • 回答としてマーク shellwe 2011年6月4日 1:36
    2011年6月3日 8:36

すべての返信

  • こんにちは。

    やりたいことが完全に理解できているか微妙かもなのですが、

    SelectionMode="OneOrMore"の状態で、
    Accordionのサイズは変更せずに、
    特定のAccordionItemのMaxHeightを指定したいということですよね。

    結論から言うと無理だと思います。
    Accordionのソースはざっとしか見てませんが、ItemsPanelはStackPanelしか受け付けないようですし、
    そのStackPanelのVerticalAlignmentもprivateなコードでTopに固定されるようです。

    もともとAccordionは

    Components in the Preview Quality Band
    に含まれており、

    >While in the Preview Quality Band, these components may have a moderate number of breaking API or behavior changes in response to customer feedback and as we learn more about how they will be used.
    >Customers are likely to encounter bugs and functionality issues for non-mainline scenarios.
    (上記リンクの引用)


    とはっきり書かれていますので
    「こういう使い方がしたい」というフィードバックをすると良いと思います。
    目的がそういうことなので。

    # ToolKitのソースはダウンロードできますので、ご自分でも見てみることをお勧めします。
    # 勉強になると思います。

    以上、参考になりましたら幸いです。

    • 回答としてマーク shellwe 2011年6月4日 1:36
    2011年6月3日 8:36
  • Tetsuki Uchida 殿

    さっそくのご返答、及び参考文献の提示ありがとうございます。

     

    >SelectionMode="OneOrMore"の状態で、
    >Accordionのサイズは変更せずに、
    >特定のAccordionItemのMaxHeightを指定したいということですよね。

    その通りでございます。

     

    ご教授いただいたリンク及びToolkitのソースの入手、閲覧を行いました。

    確かにこれでは、ソースの修正が必要のようです。

    こちらで資料を取りまとめの上、フィードバックする準備を進めたいと思います。

    ありがとうございました。

    2011年6月4日 1:36