トップ回答者
AccordionItemにMaxHeightを指定するとAccordionの表示が崩れる

質問
-
<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