Как запустить событие нажатия на TreeView Syncfusion - PullRequest
0 голосов
/ 04 ноября 2019

Menu.xaml

<MasterDetailPage.Master>
    <ContentPage Title="Menu" Padding="0">
        <ContentPage.Content>
            <StackLayout>
                <Grid BackgroundColor="LightGreen">
                    <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="10"/>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="10"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="30"/>
                            <RowDefinition Height="80"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="10"/>
                        </Grid.RowDefinitions>
                        <Label Grid.Column="1"
                               Grid.Row="2"
                               Text="DEC App"
                               TextColor="White"
                               FontSize="Large"/>
                    </Grid>
                    <syncfusion:SfTreeView x:Name="treeView">
                        <syncfusion:SfTreeView.Nodes>
                            <!--1st Menu-->
                            <treeviewengine:TreeViewNode Content="Menu 1">
                                <treeviewengine:TreeViewNode.ChildNodes>
                                    <treeviewengine:TreeViewNode Content="Menu 1.1">
                                        <!--SubMenu 1-->
                                    </treeviewengine:TreeViewNode>
                                    <treeviewengine:TreeViewNode Content="Menu 1.2">
                                        <!--SubMenu 2-->
                                        <treeviewengine:TreeViewNode.ChildNodes>
                                            <treeviewengine:TreeViewNode Content="Menu 1.2.1"/>
                                            <!--SubMenu 2.1-->
                                            <treeviewengine:TreeViewNode Content="Menu 1.2.2"/>
                                            <!--SubMenu 2.2-->
                                        </treeviewengine:TreeViewNode.ChildNodes>
                                    </treeviewengine:TreeViewNode>
                                </treeviewengine:TreeViewNode.ChildNodes>
                            </treeviewengine:TreeViewNode>
                        </syncfusion:SfTreeView.Nodes>
                    </syncfusion:SfTreeView>
                </StackLayout>
            </ContentPage.Content>
        </ContentPage>
    </MasterDetailPage.Master>
</MasterDetailPage>

Menu.xaml.cs

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace MasterDetailDemo
{
     [XamlCompilation(XamlCompilationOptions.Compile)]
     public partial class Menu : MasterDetailPage
{
    public Menu()
    {
        InitializeComponent();
        Detail = new NavigationPage(new MenuDetail());
    }

Я использовал Syncfusion SfTreeView для создания этого меню здесь

TreeView в MasterДемонстрация страницы

Но я не знаю, как создать событие щелчка на нем, я попытался прочитать все документы Syncfusion, но это не сильно помогло. Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 05 ноября 2019

Мы хотели бы сообщить, что вы можете использовать либо событие ItemTapped TreeView, либо TapCommand, чтобы получить уведомление, когда узел дерева просмотра щелкает в представлении. Мы приложили образец и фрагмент кода для вашей справки ниже.

Пример ссылки: https://www.syncfusion.com/downloads/support/directtrac/254006/ze/TreeviewMasterDetail-384415166

Чтобы узнать больше о событиях TapCommand и ItemTapped, см. Нашу документацию.

https://help.syncfusion.com/xamarin/treeview/mvvm#tap-command https://help.syncfusion.com/xamarin/treeview/interactivity#tapped-eventhttps://help.syncfusion.com/xamarin/treeview/interactivity#tapped-event

public class ContentPageBehavior : Behavior<ContentPage>
{
        protected override void OnAttachedTo(ContentPage bindable)
        {
            TreeView = bindable.FindByName<SfTreeView>("treeView");
            TreeView.ItemTapped += TreeView_ItemTapped;
            base.OnAttachedTo(bindable);
        }

        private void TreeView_ItemTapped(object sender, Syncfusion.XForms.TreeView.ItemTappedEventArgs e)
        {
            var TappedNode = e.Node as TreeViewNode;
            App.Current.MainPage.DisplayAlert("Message","Tapped Item : "+ TappedNode.Content, "Ok");
        }

}
0 голосов
/ 06 ноября 2019

Сначала добавьте событие ItemTapped к syncfusion:SfTreeView:

  <syncfusion:SfTreeView x:Name="treeView" ItemTapped="treeView_ItemTapped">
                        <syncfusion:SfTreeView.Nodes>
                            <!--1st Menu-->
                            <treeviewengine:TreeViewNode Content="Menu 1">
                                //...
                            </treeviewengine:TreeViewNode>
                        </syncfusion:SfTreeView.Nodes>
                    </syncfusion:SfTreeView>

Затем в treeView_ItemTapped вы можете узнать, на каком node вы нажали и перейти на соответствующую страницу:

private void treeView_ItemTapped(object sender, Syncfusion.XForms.TreeView.ItemTappedEventArgs e)
{

    var TappedNode = e.Node as TreeViewNode;

    Console.WriteLine(TappedNode.Content);


    if (TappedNode.Content is "Menu 1")
    {
        Detail = new NavigationPage(new ItemsPage());
        IsPresented = false;
    }
    else if (TappedNode.Content is "Menu 1.1")
    {
        Detail = new NavigationPage(new AboutPage());
        IsPresented = false;
    }
    else if (TappedNode.Content is "Menu 1.2")
    {
        //...
    }
    else
    {
        //...
    }
}

Я могу поделиться с вами образцом, если вам нужно. Дайте мне знать, если у вас есть какие-либо вопросы.

0 голосов
/ 04 ноября 2019

Вы можете использовать команду Tap для просмотра дерева syncfusion xamarin. https://help.syncfusion.com/xamarin/treeview/mvvm#tap-command

По-другому, вы также можете использовать событие ItemTapped, https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfTreeView.XForms~Syncfusion.XForms.TreeView.SfTreeView~ItemTapped_EV.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...