트리보기 메뉴가 아니라 애니메이션 축소/축소 된 중첩 섹션이있는 아코디언 스타일처럼 보이는 메뉴를 원합니다. 처음에는 트리 뷰에 내 목록을 할당했습니다. & 트리가 제대로 그려지기 때문에 다음으로 (https://www.codeproject.com/Articles/248112/Templating-WPF-Expander-Control을 사용하여) 아코디언 스타일을 프로토 타입 할 수 있었지만 지금은 트리에 사용 된 목록을 사용하여 메뉴를 동적으로 만들고 싶습니다. 나는 WPF에 익숙하다. 뷰에 트리 모양의리스트를 바인딩하는 것이 옳다. 그래서 나는 Expander와 Stackpanels를 C#으로 만들 것이다. 템플릿이 확장기에 할당되지 않았습니다. 내 부분 xaml.cs 코드 : 내 프로토 타입WPF C# 트리 목록의 익스팬더 메뉴
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은 다음과 같습니다 뷰에서 솔루션을 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"
...
아이디어는 매우 환영합니다. 사전에
감사합니다, 스티브