假设我有一个绑定项目源(可观察集合)的TreeView,我有这样的东西:http://docs.telerik.com/devtools/wpf/controls/radtreeview/how-to/howto-tri-state-mvvm
每个项目包括父视图都有一个复选框和名称(字符串)。
我想让子节点仅在检查父节点时可用。
如果父节点未被选中,所有子节点也将被取消选中。
有没有办法让我做到这一点?谢谢!
无法检查链接,但是,这是一个工作示例,我认为您应该遵循以下结构:
查看
<Grid>
<TreeView DataContext="{Binding}" ItemsSource="{Binding Models}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:ModelView}" ItemsSource="{Binding Models}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<CheckBox IsChecked="{Binding IsChecked}"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
模型
public class Model : INotifyPropertyChanged
{
bool _isChecked;
public bool IsChecked { get { return _isChecked; } set {
_isChecked = value;
RaisePropertyChanged("IsChecked");
if (_isChecked == false)
unCheckOthers();
} }
void unCheckOthers()
{
if (_models != null)
foreach (var m in _models)
m.IsChecked = false;
}
Model[] _models;
public Model[] Models { get { return _models; } set { _models = value; RaisePropertyChanged("Models"); } }
string _name;
public string Name { get { return _name; } set { _name = value; RaisePropertyChanged("Name"); } }
public event PropertyChangedEventHandler PropertyChanged;
void RaisePropertyChanged(string propname)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propname));
}
}
查看模型
public class ViewModel
{
public ViewModel()
{
_models = new ObservableCollection<Model>();
}
ObservableCollection<Model> _models;
public ObservableCollection<Model> Models { get { return _models; } set { _models = value; } }
}
主窗口
public MainWindow()
{
InitializeComponent();
ViewModel mv = new ViewModel();
Model m1 = new Model() { Name = "model1", IsChecked = true, Desc = "None1" };
Model m2 = new Model() { Name = "model2", IsChecked = true, Desc = "None2" };
Model m3 = new Model() { Name = "model3", IsChecked = true, Desc = "None3" };
Model m4 = new Model() { Name = "model4", IsChecked = true, Desc = "None4", Models = new Model[2] {m1,m2} };
Model m5 = new Model() { Name = "model5", IsChecked = true, Desc = "None5", Models = new Model[2] { m4, m3 } };
mv.Models = new ObservableCollection<Model>() { m5 };
this.DataContext = mv;
}
我正在尝试用multiselect实现一个自定义的。由于我的原因,我不能使用现有的解决方案。 我的问题是:我有一个,其中一些子项被禁用。有时,当我单击启用的节点,然后单击禁用的节点时,父节点会被选中。 我想摆脱这种默认的选择行为,因为我的treeview中的所有项目都有一个数据库属性,我在实际点击项目时设置了这个属性,我不希望treeview自己选择一些项目! 更新:我需要处理对禁用项目的单击,因
element ui 树状表格选择父节点子节点全选,子节点不全选父节点半选? el-table没有相关示例,需要手动实现好像?![上传中...]()
element ui 树状表格选择父节点子节点全选,子节点不全选父节点半选? el-table没有相关示例,需要手动实现好像?
如果我没弄错的话,树通常是一个列表,其中的元素按特定顺序排列。孩子们不在他们自己的子列表中,他们都在同一个列表中。 所以,我试图创建一个Tree类,其中包含TreeNodes(类)使用Tree类中的List。 我如何跟踪父母/孩子/叶子?如果父母“父母1”,有两个孩子“孩子A”和“孩子B”,我如何将他们联系在一起?
我需要将子元素复制到父元素中。 输入 期望输出 我尝试的内容(输出与输入保持相同): 我肯定会错过一些非常简单的事情。子元素与父元素具有相同的名称,这应该不是问题?
我想从父节点复制到子节点。我真的不确定这是如何实现的。 我的源xml 我想得到输出为 我想要XSLT1.0中的解决方案。 我想将这些节点复制到子节点 谢谢。