无法从xamarin表单项目的pcl部分中的代码访问控件

时间:2017-01-20 12:09:54

标签: xaml xamarin xamarin.forms code-behind xforms

我有 Xamarin.Forms 项目与pcl-part和原生win,ios和android部分。 所有页面结构和视图模型都在pcl-part中。应用程序工作很好,但是当我试图将Grid隐藏在代码背后时 - 它什么都不做。这是代码示例:

的Xaml

<ContentPage
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="SomeNamespase.SomePage">

    <Grid x:Name="InnerGrid" BackgroundColor="Green">
        <Frame x:Name="InnerContent"/>
    </Grid>
</ContentPage>

.cs

using System;

namespace SomeNamespase
{
    public partial class SomePage : ContentPage
    {
        public void SomeMethod()
        {
            this.InnerGrid.IsVisible = false;
            this.InnerContent.BackgroundColor = Color.Aqua;           
        }
    }
}

我也试过this.FindByName<Grid>("InnerGrid");相同的结果

注意:如果我试图从PCL中获取控件,一切都很好。当我试图在Windows(或其他平台)项目中从ViewPresenter获取控件时,没有任何事情发生。

2 个答案:

答案 0 :(得分:0)

您需要确保正确实施INotifyPropertyChanged

protected virtual void OnPropertyChanged(string propertyName)
{
    if (PropertyChanged != null)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

答案 1 :(得分:0)

请尝试以下代码,因为在代码中我看不到构造函数。

using System;

namespace SomeNamespase
{
    public partial class SomePage : ContentPage
    {
        public SomePage() 
       {
            SomeMethod() ;
       } 
        public void SomeMethod()
        {
            this.InnerGrid.IsVisible = false;
            this.InnerContent.BackgroundColor = Color.Aqua;           
        }
    }
}