【问题标题】:Xamarin Forms Navigation page searchbar entries unable to writeXamarin 表单导航页面搜索栏条目无法写入
【发布时间】:2018-02-06 09:03:44
【问题描述】:

我有两个页面 MainPage 和 SecondPage1 .in App.xaml.cs 我使用以下代码导航到 Secondpage1: App.xaml.cs:

//MainPage = new  Fmkt44Application.MainPage();/*First Approach*/
  MainPage = new NavigationPage(new MainPage());/*Second approach*/

MainPage.xaml.cs:

// App.Current.MainPage = new NavigationPage(new SecondPage1());/*First Approach*/
await Navigation.PushAsync(new SecondPage1());/*Second approach*/

问题是,如果我同时使用这两种方法,我可以导航到 secondpage1,但如果我使用第二种方法,我无法在搜索栏或任何条目上书写。是什么原因,我该如何解决?

这里是 MainPage.xaml.cs

namespace Fmkt44Application
{
 public partial class MainPage : ContentPage
 {
  public MainPage()
    {
        InitializeComponent();
    }
    public async System.Threading.Tasks.Task LoginControlAsync(Object sender, EventArgs args)
    {
        User.UserName = entry_user.Text;
        User.Password = entry_passw.Text;
        if (User.CheckUserInformation() == false)
        {
            DisplayAlert("Login", "Kullanıcı Adını veya şifresini giriniz", "OK");
        }
        else
        {
            String val = entry_user.Text + "$" + entry_passw.Text;
            CallIasWebService.Login();
            String rval = CallIasWebService.CallIASService("PROFILECONTROL", val);
            CallIasWebService.Logout();
            User.Profile = rval.ToString();

            if (rval != "0"  )
            {
                if (User.Profile != "" && User.Profile != null)
                {

                    // App.Current.MainPage = new NavigationPage(new SecondPage1());if I Call Like this I can write on Secondpage1 (First approach)
                    await Navigation.PushAsync(new SecondPage1());/*I cannot reach SecondPage1 controls/* (second approach)*/
                }
                    else
                {
                    DisplayAlert("Login", "Kayıt yapma yetkiniz yoktur.", "OK");
                }

            }
            else
            {
                DisplayAlert("Login", "Kullanıcı Adını veya şifresi hatalıdır.", "OK");

            }
        }

    }
    public async System.Threading.Tasks.Task scanncontrolAsync(Object sender, EventArgs E)
    {
      // await Navigation.PushAsync(new SecondPage1());
        App.Current.MainPage = new SecondPage1();
    }
}

}

App.cs 是

    public App ()
    {
        InitializeComponent();

        //MainPage = new  Fmkt44Application.MainPage();(First apploach)
         MainPage = new NavigationPage(new MainPage());/*second approach*/

    }

Secondpage1.xaml 是

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="Fmkt44Application.SecondPage1">
<ContentPage.Content>
    <StackLayout>
        <SearchBar Placeholder="Ara..." TextChanged="TextChange" x:Name="searchbar" />
        <ListView x:Name="Materials" ItemTapped="MakineSec" HasUnevenRows="True">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout>
                                <StackLayout Orientation="Horizontal"  >
                                    <Label Text="{Binding Material}"/>
                                    <Label Text="{Binding Stext}"/>
                                </StackLayout>
                                <Entry Text="{Binding SerialNumber}" />
                            </StackLayout>
                            <ViewCell.ContextActions>
                                <MenuItem Text="Seç" Clicked="MakineSec" CommandParameter="{Binding .}"/>
                            </ViewCell.ContextActions>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
     </StackLayout>
</ContentPage.Content>

【问题讨论】:

  • “我无法写入搜索栏或任何条目”是什么意思?请包括不起作用的相关代码。请清楚地说明上下文 - 您通常会从 SecondPage 的代码访问 SecondPage 上存在的控件。这就是你想要做的吗?
  • 我无法访问控件。但是当我使用没有 Navigationpage 的相同代码结构时,我可以到达。而这个原因我不知道哪个代码部分相关
  • 无法从哪里联系到他们?您想从哪个特定班级联系他们?请提供一个具体的例子。
  • 当您说“无法访问第二页控件”时,您不应尝试从 MainPage 直接访问 SecondPage 上的控件。这只是糟糕的设计。如果要将值传递给 SecondPage,请使用构造函数或在 SecondPage 上创建您在导航到它之前设置的公共属性。

标签: xaml xamarin xamarin.forms


【解决方案1】:

问题来自 Android 模拟器。我尝试解决了一个真正的平板电脑问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多