diff --git a/ScreenShot/CheckBoxStateUpdateTreeViewXamarin.png b/ScreenShot/CheckBoxStateUpdateTreeViewXamarin.png index a8fa8af..b412451 100644 Binary files a/ScreenShot/CheckBoxStateUpdateTreeViewXamarin.png and b/ScreenShot/CheckBoxStateUpdateTreeViewXamarin.png differ diff --git a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.Android/TreeViewXamarin.Android.csproj b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.Android/TreeViewXamarin.Android.csproj index cd38ed6..2745644 100644 --- a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.Android/TreeViewXamarin.Android.csproj +++ b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.Android/TreeViewXamarin.Android.csproj @@ -50,10 +50,10 @@ - 19.1.0.55 + 19.1.0.57 - 19.1.0.55 + 19.1.0.57 diff --git a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.UWP/TreeViewXamarin.UWP.csproj b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.UWP/TreeViewXamarin.UWP.csproj index a1fd231..758037a 100644 --- a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.UWP/TreeViewXamarin.UWP.csproj +++ b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.UWP/TreeViewXamarin.UWP.csproj @@ -144,10 +144,10 @@ - 19.1.0.55 + 19.1.0.57 - 19.1.0.55 + 19.1.0.57 diff --git a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.iOS/TreeViewXamarin.iOS.csproj b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.iOS/TreeViewXamarin.iOS.csproj index d80041e..eb97414 100644 --- a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.iOS/TreeViewXamarin.iOS.csproj +++ b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.iOS/TreeViewXamarin.iOS.csproj @@ -149,10 +149,10 @@ - 19.1.0.55 + 19.1.0.57 - 19.1.0.55 + 19.1.0.57 diff --git a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/Helper/TreeViewBehavior.cs b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/Helper/TreeViewBehavior.cs index d7ff85f..45d723f 100644 --- a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/Helper/TreeViewBehavior.cs +++ b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/Helper/TreeViewBehavior.cs @@ -45,36 +45,46 @@ private void UpdateCheckBoxState() var checkedNodes = TreeView.GetCheckedNodes(); foreach (var node in checkedNodes) { - //Update child nodes based on parent's checked state. if (node.ParentNode == null && node.HasChildNodes) { - setChildChecked(node); + //Update child nodes based on parent's checked state. + SetChildChecked(node); } - //Update parent node based on child's checked state. - else if (node.ParentNode != null) + else { - if (node.ParentNode.ChildNodes.All(x => x.IsChecked == true)) - { - node.ParentNode.IsChecked = true; - } - else node.ParentNode.IsChecked = null; + //Update parent node based on child's checked state. + SetParentChecked(node); } - } } - private void setChildChecked(TreeViewNode node) + private void SetChildChecked(TreeViewNode node) { foreach (var child in node.ChildNodes) { child.IsChecked = true; if (child.HasChildNodes) { - setChildChecked(child); + SetChildChecked(child); } } } + + private void SetParentChecked(TreeViewNode node) + { + if (node.ParentNode == null) return; + + if (node.ParentNode.ChildNodes.All(x => x.IsChecked == true)) + node.ParentNode.IsChecked = true; + + else node.ParentNode.IsChecked = null; + + if(node.ParentNode != null) + { + SetParentChecked(node.ParentNode); + } + } #endregion } } diff --git a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.csproj b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.csproj index 5ae5ca5..7f9d19a 100644 --- a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.csproj +++ b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin.csproj @@ -16,8 +16,8 @@ - - + + \ No newline at end of file diff --git a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/ViewModel/FileManagerViewModel.cs b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/ViewModel/FileManagerViewModel.cs index c83de21..175d8ef 100644 --- a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/ViewModel/FileManagerViewModel.cs +++ b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/ViewModel/FileManagerViewModel.cs @@ -111,8 +111,7 @@ private ObservableCollection GetFiles() checkedItems.Add(doc); checkedItems.Add(typeScript); checkedItems.Add(uiGuide); - checkedItems.Add(stone); - checkedItems.Add(pictures); + checkedItems.Add(img1); checkedItems.Add(song); return nodeImageInfo; diff --git a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/Views/MainPage.xaml b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/Views/MainPage.xaml index a676b19..6acd03f 100644 --- a/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/Views/MainPage.xaml +++ b/TreeViewXamarin/TreeViewXamarin/TreeViewXamarin/Views/MainPage.xaml @@ -11,26 +11,27 @@ - + - - - - - - - + + + + + + + - - - - - - - - - - + + + + + + + + + + \ No newline at end of file