Xaml 如何绑定到IsExpanded属性-持久化TreeView';什么是扩张状态?

Xaml 如何绑定到IsExpanded属性-持久化TreeView';什么是扩张状态?,xaml,winrt-xaml-toolkit,Xaml,Winrt Xaml Toolkit,在ViewModel中,我定义了一个bool ShouldExpand属性,该属性在TreeView的itemcontainerstyle中绑定到它-它不起作用 这个答案()本来可以回答我的问题,但它不起作用 是否有工作代码段 public class AgendaItemTreeView : ViewModelBase { private string _title; private Visibility _documentGridVisibility = Visibility

在ViewModel中,我定义了一个bool ShouldExpand属性,该属性在TreeView的itemcontainerstyle中绑定到它-它不起作用

这个答案()本来可以回答我的问题,但它不起作用

是否有工作代码段

public class AgendaItemTreeView : ViewModelBase
{
    private string _title;
    private Visibility _documentGridVisibility = Visibility.Collapsed;
    private bool _shouldExpand;

    // Binding property - to display in a TreeView
    public string Title
    {
        get { return _title; }
        set { Set(ref _title, value); }
    }

    // To expand/collapse documents GridView
    public Visibility DocumentGridVisibility
    {
        get { return _documentGridVisibility; }
        set { Set(ref _documentGridVisibility, value); }
    }

    // Property to expand/collapse a node in a TreeView - does not work!
    public bool ShouldExpand
    {
        get { return _shouldExpand; }
        set { Set(ref _shouldExpand, value); }
    }

    // Nested agenda items
    public ObservableCollection<AgendaItemTreeView> AgendaItems { get; set; } = new ObservableCollection<AgendaItemTreeView>();

    // Documents of current agenda item
    public ObservableCollection<DocumentViewModel> Documents { get; set; } = new ObservableCollection<DocumentViewModel>();

    public DocumentViewModel SelectedItem { get; set; }

    public AgendaItemTreeView(AgendaItem agendaItem, string selectedTitle = "")
    {
        // Constructor populating the nested AgendaItem & Documents
    }
}
公共类AgendaItemTreeView:ViewModelBase
{
私有字符串\u标题;
私有可见性_documentGridVisibility=可见性。已折叠;
私人住宅应扩建;
//绑定属性-在树视图中显示
公共字符串标题
{
获取{return\u title;}
集合{set(ref _title,value);}
}
//在GridView中展开/折叠文档的步骤
公众能见度
{
获取{return\u documentGridVisibility;}
set{set(ref_documentGridVisibility,value);}
}
//属性展开/折叠树视图中的节点-不起作用!
公共图书馆应该扩张
{
获取{return\u shouldExpand;}
集合{set(ref _shouldExpand,value);}
}
//嵌套的议程项目
公共ObservableCollection代理项{get;set;}=new ObservableCollection();
//本议程项目的文件
公共ObservableCollection文档{get;set;}=new ObservableCollection();
公共文档视图模型SelectedItem{get;set;}
public AgendaItemTreeView(AgendaItem AgendaItem,字符串selectedTitle=“”)
{
//填充嵌套AgendaItem和文档的构造函数
}
}
XAML:



共享最小复制?请检查-张贴的短代码。。。当我绑定到ViewModel中的ShouldExpand属性时,除顶级树节点外,所有树节点都会展开。必须按下这个按钮,然后它会展开下面的所有树枝。但是顶级节点不会扩展,无论我的绑定如何。。。UserControl的ItemsSource绑定到公共ObservableCollection树项{get;set;}
<UserControl

    <UserControl.Resources>

        <!--<Style x:Key="TreeViewItemContainerStyle" TargetType="controls:TreeViewItem">
            <Setter Property="IsExpanded" Value="{Binding ShouldExpand, Mode=TwoWay}"/>
        </Style>-->

        <!-- Folder type Node, that can contain other 'folders' and 'files' -->
        <DataTemplate x:Key="TreeViewItemTemplate" x:DataType="vm:AgendaItemTreeView">
            <data:DataTemplateExtensions.Hierarchy>
                <data:HierarchicalDataTemplate ItemsSource="{Binding AgendaItems}" />
                <!-- When the next line used together with the Style TreeViewItemContainerStyle - the TreeView still does not expand the top level tree. The app C
                <!--<data:HierarchicalDataTemplate ItemsSource="{Binding AgendaItems}" ItemContainerStyle="{StaticResource TreeViewItemContainerStyle}"/>-->
            </data:DataTemplateExtensions.Hierarchy>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>

                <ToggleButton x:Name="titleToggleBtn" Tapped="{x:Bind ExpandDocumentsCommand}">
                    <StackPanel Orientation="Horizontal">
                        <SymbolIcon Symbol="{x:Bind DocumentsIcon}" Margin="5,0"/>
                        <TextBlock Text="{Binding Title}"/>
                    </StackPanel>
                </ToggleButton>
                <GridView Grid.Row="1" x:Name="DocumentsGrid" ItemsSource="{Binding Documents}" ItemTemplate="{StaticResource ZoomedInTemplate}" Visibility="{Binding DocumentGridVisibility}" SelectedItem="{Binding SelectedItem}"/>
            </Grid>
        </DataTemplate>

        <!-- Nested 'file' type Node data template -->
        <DataTemplate x:Key="ZoomedInTemplate" x:DataType="vm:DocumentViewModel">
            <Border BorderBrush="Black" Padding="5" BorderThickness="1" Width="100">
                <Grid Tapped="{x:Bind TappedCommand}">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <Image Source="{Binding Thumbnail}" Width="60" Height="80" />
                    <TextBlock Grid.Row="1" Text="{x:Bind Title, Mode=OneWay}" VerticalAlignment="Center" Tapped="{x:Bind TappedCommand}"/>
                </Grid>
            </Border>
        </DataTemplate>

    </UserControl.Resources>

    <Grid d:DataContext="{d:DesignData /SampleData/AgendaItemTreeViewSampleData.xaml}">
        <controls:TreeView x:Name="myTreeView" 
                           ItemsSource="{x:Bind TreeItems}" 
                           ItemTemplate="{StaticResource TreeViewItemTemplate}" />

    </Grid>
</UserControl>