- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我觉得我在 WPF 数据绑定(bind)中缺少一些基本概念。我的绑定(bind)是否对我有用总是成问题的。
在此示例中,我想将 TreeViewItem 的 IsExpanded 属性双向绑定(bind)到绑定(bind)对象上的相应属性。它确实适用于第一个示例;它不与第二个。
谁能解释为什么?我不明白为什么第二个版本不起作用。我不禁想到,如果可以的话,它会为我省去无尽的悲伤。
这在放置在 UserControl.Resources 中时有效(绑定(bind)到 IsExpanded 是使用应用于 TreeViewItem 的样式完成的:
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded"
Value="{Binding Path=IsExpanded, Mode=TwoWay}" />
</Style>
<DataTemplate DataType="{x:Type viewModels:FolderItem}">
<TreeViewItem ItemsSource="{Binding Folders}"
IsExpanded="{Binding Mode=TwoWay,Path=IsExpanded}" >
<TreeViewItem.Header>
<StackPanel Orientation="Vertical">
<Image Source="{Binding IconSource}"
Width="16" Height="16"
Margin="4,0,4,0" VerticalAlignment="Center" />
<TextBlock Text="{Binding Title}"
VerticalAlignment="Center" />
</StackPanel>
</TreeViewItem.Header>
</TreeViewItem>
</DataTemplate>
<DataTemplate DataType="{x:Type viewModels:FolderItem}">
<TreeViewItem ItemsSource="{Binding Folders}"
IsExpanded="{Binding Path=IsExpanded,Mode=TwoWay}" >
<TreeViewItem.Header>
<StackPanel Orientation="Vertical">
<Image Source="{Binding IconSource}"
Width="16" Height="16" Margin="4,0,4,0"
VerticalAlignment="Center" />
<TextBlock Text="{Binding Title}"
VerticalAlignment="Center" />
</StackPanel>
</TreeViewItem.Header>
</TreeViewItem>
</DataTemplate>
<TreeView ItemsSource="{Binding Documents}" />
最佳答案
问题是 TreeViewItem
实际上是 TreeView
使用的包装器本身。它不需要(也不应该)成为您的 DataTemplate
的一部分,因为您现在拥有的是创建 TreeViewItem
在 TreeViewItem
内(外层由 TreeView
创建,内层是模板的一部分)。
这就是你的风格有效的原因,因为它适用于所有 TreeViewItem
s,你声明的那个(最终变得毫无意义)和由 TreeView
创建的那个.
你应该做的是更换你的DataTemplate
有了这个:
<HierarchicalDataTemplate ItemsSource="{Binding Folders}">
<StackPanel Orientation="Vertical">
<Image Source="{Binding IconSource}"
Width="16" Height="16" Margin="4,0,4,0"
VerticalAlignment="Center" />
<TextBlock Text="{Binding Title}"
VerticalAlignment="Center" />
<HierarchicalDataTemplate>
关于wpf - 绑定(bind)到 TreeViewItem.IsExpanded。为什么这行得通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21123719/
在下面的代码中: http://msdn.microsoft.com/en-us/library/ms754027.aspx 如何将 IsExpanded 绑定(bind)到对象的 MyData 列表
我有一个 Expander 控件,其 IsExpanded 属性绑定(bind)到 mvvm 模型中的 bool。在您不触摸扩展器之前,绑定(bind)工作正常。单击扩展器中的箭头进行扩展后,绑定(b
我有一个相当棘手的问题: 我正在使用 ListView 控件,其中 ItemsSource 设置为 CollectionViewSource,包括 PropertyGroupDescription 以
我有一个分层数据类,比如 public class MyNode { public string Name { get; set;} public bool IsExpanded { ge
我觉得我在 WPF 数据绑定(bind)中缺少一些基本概念。我的绑定(bind)是否对我有用总是成问题的。 在此示例中,我想将 TreeViewItem 的 IsExpanded 属性双向绑定(bin
我有 TreeView控制和我想绑定(bind)树节点的IsExpanded属性(property)归我DataSource项目! 但我有一个异常(exception): System.Windows
我正在使用JXTreeTable。我想仅在行折叠时才在单元格中显示文本。如果该行展开,则详细值将显示在子级中,因此父级中的缩短文本不应再可见。 据我所知,这需要通过提供 DefaultTableRen
要获得一些上下文,这个问题指的是 How to save the IsExpanded state in group headers of a listview 我在这里错过了什么? 当我尝试执行引用
我对 GroupStyle 和 Expander.IsExpanded 绑定(bind)有疑问。我的代码基于这个答案:How to save the IsExpanded state in group
我有一个 TreeView,它将在任意层次结构中显示几种不同的数据类型。为此,我为将在我的 TreeView 中显示的每个数据类型定义了特定的 HierarchicalDataTemplate:
我正在尝试使用条件模板在 XAML 中设置我的 TreeView 项目的 IsExpanded 属性: 当我从 C# 代码设置 MyStatus 属性时,颜色发生了变化(因此
考虑 ViewModel暴露在 Model 中定义的树,然后将其数据绑定(bind)到 TreeView .树相当大,直接使用模型,因为它对于 View 本质上是只读的。现在,TreeView生活在
我是一名优秀的程序员,十分优秀!