Xaml 如何绑定到IsExpanded属性-持久化TreeView';什么是扩张状态?
在ViewModel中,我定义了一个bool ShouldExpand属性,该属性在TreeView的itemcontainerstyle中绑定到它-它不起作用 这个答案()本来可以回答我的问题,但它不起作用 是否有工作代码段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
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>