ツリービューメニューではなく、アニメーションの折り畳み/展開のネストされたセクションを含むメニューをアコーディオンスタイルのようにしたいと考えています。最初はツリービューにリストを割り当てました&ツリーは正しく描画されていましたので、次にアコーディオンスタイル(https://www.codeproject.com/Articles/248112/Templating-WPF-Expander-Controlを使用)のプロトタイプを作成できましたが、ツリーに使用されているリストを使って動的にメニューを作成します。私はWPFを初めて使っているので、木のようなリストをビューにバインドすることで正しい方法でやっているので、私はExpanderとStackpanelsをC#で作成することにしました。私は、テンプレートをエキスパンダーに割り当てることができませんでした。私の部分xaml.csコード:C#でテンプレートを割り当てるか、またはビューでソリューションを行う方法についてのアイデアは非常に歓迎されているWPF C#ツリーリストのエキスパンダーメニュー
<Expander Template="{StaticResource RevealExpanderTemp}"
OverridesDefaultStyle="True"
Header="Option 1"
HorizontalAlignment="Left"
VerticalAlignment="Top"
>
<StackPanel>
<Expander Template="{StaticResource RevealExpanderTemp}"
OverridesDefaultStyle="True"
Header="Sub Option 1"
HorizontalAlignment="Left"
VerticalAlignment="Top"
>
<StackPanel>
<Button Content="Item 1.1" Style="{StaticResource TestContentStyle}"/>
<Button Content="Item 1.2" Style="{StaticResource TestContentStyle}"/>
<Button Content="Item 1.3" Style="{StaticResource TestContentStyle}"/>
<Button Content="Item 1.4" Style="{StaticResource TestContentStyle}"/>
</StackPanel>
</Expander>
<Expander Template="{StaticResource RevealExpanderTemp}"
OverridesDefaultStyle="True"
Header="Sub Option 2"
...
:
private void CreateMenu(PageViewModel n)
{
doRecurseTree(n, MenuStack);
}
private void doRecurseTree(PageViewModel n, StackPanel sp)
{
foreach (PageViewModel c in n.Children)
{
if (c.Children.Count() > 0)
{
Console.WriteLine("<expander header='"+c.Name+"'><stackpanel>");
Expander ex = new Expander();
ex.OverridesDefaultStyle = true;
ex.Header = c.Name;
ex.HorizontalAlignment = HorizontalAlignment.Left;
ex.VerticalAlignment = VerticalAlignment.Top;
ex.Template = /*"{StaticResource RevealExpanderTemp}"*/;
StackPanel spc = new StackPanel();
doRecurseTree(c, spc);
Console.WriteLine("</stackpanel></expander>");
}
else
{
Console.WriteLine("<button content='" + c.Name+"' />");
Button b = new Button();
b.Content = c.Name;
sp.Children.Add(b);
}
}
}
XAML私の試作品では、次のようになります。事前に
おかげで、 スティーブ