Я скопировал базовый метод наличия флажка в виде дерева из официального набора инструментов Silverlight Флажки в примере TreeView .
Когда пользователь нажимает на родительский TreeViewItem, я хочу, чтобы всепроверяемые дочерние элементы, как в приведенном выше примере.Это прекрасно работает, когда родительский узел свернут, щелчок флажка ставит галочку в родительском элементе, и когда вы расширяете узел, у всех потомков есть галочка в этом флажке.
Однако это не работает, если родительский узел раскрыт,Ни один из дочерних элементов не обновлен, чтобы иметь галочку в флажке, хотя обновляется базовый список данных.
Мой XAML выглядит следующим образом:
<sdk:HierarchicalDataTemplate x:Key="NodeTemplate" ItemsSource="{Binding Path=Contracts}">
<StackPanel Orientation="Horizontal" ToolTipService.ToolTip="{Binding Path=Name}">
<CheckBox IsTabStop="False" IsThreeState="{Binding Path=HasContracts}" IsChecked="{Binding Path=Selected, Mode=TwoWay}" Click="CheckBox_Click" />
<TextBlock Text="{Binding Path=Name}" Tag="{Binding Path=ID}"/>
</StackPanel>
</sdk:HierarchicalDataTemplate>
<sdk:TreeView x:Name="tvClientContract" ItemsSource="{Binding Path=ClientContracts, Mode=TwoWay}" ItemTemplate="{StaticResource NodeTemplate}"/>
Это связано с List<ClientContract>
и использует тот же код, что и в связанном примере.
Объект ClientContract:
public int ID { get; set; }
public string Name { get; set; }
public List<ClientContract> Contracts { get; set; }
public bool? Selected { get; set; }
Как заставить ребенка перерисовать себя, поскольку базовый объект List<ClientContract>
обновлено