|
1 | | -# navigation-on-selection-treeview-xamarin |
2 | | -How to do navigation on selection in Xamarin.Forms TreeView (SfTreeView) |
| 1 | +# How to do navigation on selection in Xamarin.Forms TreeView (SfTreeView) |
| 2 | + |
| 3 | +You can navigate to another page by selecting the [TreeViewNode](https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfTreeView.XForms~Syncfusion.TreeView.Engine.TreeViewNode.html) in Xamarin.Forms [SfTreeView](https://help.syncfusion.com/xamarin/treeview/overview) by binding [SelectedItem](https://help.syncfusion.com/cr/xamarin/Syncfusion.SfTreeView.XForms~Syncfusion.XForms.TreeView.SfTreeView~SelectedItem.html) property from **ViewModel**. |
| 4 | + |
| 5 | +**XAML** |
| 6 | + |
| 7 | +Binding ViewModel **TreeViewSelectedItem** to **SfTreeView.SelectedItem**. |
| 8 | + |
| 9 | +``` xml |
| 10 | +ContentPage xmlns="http://xamarin.com/schemas/2014/forms" |
| 11 | + xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" |
| 12 | + xmlns:local="clr-namespace:TreeViewXamarin" |
| 13 | + xmlns:syncfusion="clr-namespace:Syncfusion.XForms.TreeView;assembly=Syncfusion.SfTreeView.XForms" |
| 14 | + x:Class="TreeViewXamarin.MainPage"> |
| 15 | + <ContentPage.BindingContext> |
| 16 | + <local:FileManagerViewModel x:Name="viewModel"/> |
| 17 | + </ContentPage.BindingContext> |
| 18 | + <ContentPage.Content> |
| 19 | + <syncfusion:SfTreeView x:Name="treeView" ChildPropertyName="SubFiles" SelectedItem="{Binding TreeViewSelectedItem, Mode=TwoWay}" ExpandActionTarget="Node" ItemTemplateContextType="Node" AutoExpandMode="None" ItemsSource="{Binding ImageNodeInfo}"> |
| 20 | + <syncfusion:SfTreeView.ItemTemplate> |
| 21 | + <DataTemplate> |
| 22 | + <Grid x:Name="grid" RowSpacing="0" > |
| 23 | + <Grid.ColumnDefinitions> |
| 24 | + <ColumnDefinition Width="40" /> |
| 25 | + <ColumnDefinition Width="*" /> |
| 26 | + </Grid.ColumnDefinitions> |
| 27 | + <Image Source="{Binding Content.ImageIcon}" VerticalOptions="Center" HorizontalOptions="Center" HeightRequest="35" WidthRequest="35"/> |
| 28 | + <Grid Grid.Column="1" RowSpacing="1" Padding="1,0,0,0" VerticalOptions="Center"> |
| 29 | + <Label LineBreakMode="NoWrap" Text="{Binding Content.ItemName}" VerticalTextAlignment="Center"/> |
| 30 | + </Grid> |
| 31 | + </Grid> |
| 32 | + </DataTemplate> |
| 33 | + </syncfusion:SfTreeView.ItemTemplate> |
| 34 | + </syncfusion:SfTreeView> |
| 35 | + </ContentPage.Content> |
| 36 | +</ContentPage> |
| 37 | +``` |
| 38 | + |
| 39 | +**C#** |
| 40 | + |
| 41 | +Navigate to another page in the ViewModel **TreeViewSelectedItem** setter using [PushAsync](https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.inavigation.pushasync) method. |
| 42 | + |
| 43 | +``` c# |
| 44 | +namespace TreeViewXamarin |
| 45 | +{ |
| 46 | + public class FileManagerViewModel |
| 47 | + { |
| 48 | + private FileManager treeViewSelectedItem; |
| 49 | + |
| 50 | + public FileManager TreeViewSelectedItem |
| 51 | + { |
| 52 | + get { return treeViewSelectedItem; } |
| 53 | + set |
| 54 | + { |
| 55 | + if (treeViewSelectedItem != value) |
| 56 | + { |
| 57 | + treeViewSelectedItem = value; |
| 58 | + ItemSelected(treeViewSelectedItem); |
| 59 | + } |
| 60 | + } |
| 61 | + } |
| 62 | + |
| 63 | + private async void ItemSelected(FileManager selectedItem) |
| 64 | + { |
| 65 | + await Task.Delay(250); |
| 66 | + var newPage = new NewPage(); |
| 67 | + newPage.BindingContext = selectedItem; |
| 68 | + await App.Current.MainPage.Navigation.PushAsync(newPage); |
| 69 | + } |
| 70 | + } |
| 71 | +} |
| 72 | +``` |
| 73 | + |
| 74 | +**Output** |
| 75 | + |
| 76 | + |
0 commit comments