Xamarin XF绑定。。属性未找到,但仅适用于我的Android应用程序,不适用于iOS
下面是我在应用程序输出中看到的错误消息:Xamarin XF绑定。。属性未找到,但仅适用于我的Android应用程序,不适用于iOS,xamarin,xamarin.forms,Xamarin,Xamarin.forms,下面是我在应用程序输出中看到的错误消息: Binding: 'GearTapBtnCmd' property not found on 'Memorise.HomeTabPage', target property: 'Memorise.HomeTabPage.RightIconTapCommand' HomeTabPage.xaml <?xml version="1.0" encoding="UTF-8"?> <t:HeadingS
Binding: 'GearTapBtnCmd' property not found on 'Memorise.HomeTabPage',
target property: 'Memorise.HomeTabPage.RightIconTapCommand'
HomeTabPage.xaml
<?xml version="1.0" encoding="UTF-8"?>
<t:HeadingScrollableView
PageTitle="Home"
PageTitleVisible="True"
RightIconSource="{DynamicResource GearIcon}"
RightIconTapCommand="{Binding GearTapBtnCmd, Mode=OneWay}"
public partial class HomeTabViewModel : BaseViewModel
{
public IAsyncCommand GearTapBtnCmd { get; private set; }
public HomeTabViewModel()
{
GearTapBtnCmd = new MvvmHelpers.Commands.AsyncCommand(OpenPrefAsync);
}
<?xml version="1.0" encoding="UTF-8"?>
<t:HeadingViewBase
Shell.NavBarIsVisible="false"
x:Class="Memorise.Templates.HeadingScrollableView"
x:Name="ContentPage"
xmlns:ffimageloadingsvg="clr-namespace:FFImageLoading.Svg.Forms;assembly=FFImageLoading.Svg.Forms"
xmlns:t="clr-namespace:Memorise.Templates"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns="http://xamarin.com/schemas/2014/forms" >
<t:HeadingViewBase.Content>
<Grid
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={x:Reference ContentPage}, Path=RightIconTapCommand}"/>
</Grid.GestureRecognizers>
</Grid>
</t:HeadingViewBase.Content>
</t:HeadingViewBase>
HomeTabViewModel
<?xml version="1.0" encoding="UTF-8"?>
<t:HeadingScrollableView
PageTitle="Home"
PageTitleVisible="True"
RightIconSource="{DynamicResource GearIcon}"
RightIconTapCommand="{Binding GearTapBtnCmd, Mode=OneWay}"
public partial class HomeTabViewModel : BaseViewModel
{
public IAsyncCommand GearTapBtnCmd { get; private set; }
public HomeTabViewModel()
{
GearTapBtnCmd = new MvvmHelpers.Commands.AsyncCommand(OpenPrefAsync);
}
<?xml version="1.0" encoding="UTF-8"?>
<t:HeadingViewBase
Shell.NavBarIsVisible="false"
x:Class="Memorise.Templates.HeadingScrollableView"
x:Name="ContentPage"
xmlns:ffimageloadingsvg="clr-namespace:FFImageLoading.Svg.Forms;assembly=FFImageLoading.Svg.Forms"
xmlns:t="clr-namespace:Memorise.Templates"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns="http://xamarin.com/schemas/2014/forms" >
<t:HeadingViewBase.Content>
<Grid
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={x:Reference ContentPage}, Path=RightIconTapCommand}"/>
</Grid.GestureRecognizers>
</Grid>
</t:HeadingViewBase.Content>
</t:HeadingViewBase>
HeadinsScrollableView.xaml
<?xml version="1.0" encoding="UTF-8"?>
<t:HeadingScrollableView
PageTitle="Home"
PageTitleVisible="True"
RightIconSource="{DynamicResource GearIcon}"
RightIconTapCommand="{Binding GearTapBtnCmd, Mode=OneWay}"
public partial class HomeTabViewModel : BaseViewModel
{
public IAsyncCommand GearTapBtnCmd { get; private set; }
public HomeTabViewModel()
{
GearTapBtnCmd = new MvvmHelpers.Commands.AsyncCommand(OpenPrefAsync);
}
<?xml version="1.0" encoding="UTF-8"?>
<t:HeadingViewBase
Shell.NavBarIsVisible="false"
x:Class="Memorise.Templates.HeadingScrollableView"
x:Name="ContentPage"
xmlns:ffimageloadingsvg="clr-namespace:FFImageLoading.Svg.Forms;assembly=FFImageLoading.Svg.Forms"
xmlns:t="clr-namespace:Memorise.Templates"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns="http://xamarin.com/schemas/2014/forms" >
<t:HeadingViewBase.Content>
<Grid
<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Source={x:Reference ContentPage}, Path=RightIconTapCommand}"/>
</Grid.GestureRecognizers>
</Grid>
</t:HeadingViewBase.Content>
</t:HeadingViewBase>
出现警告消息,但代码似乎有效。有人知道是什么导致了警告信息吗?如何避免“警告”
将HomeTabPage
的构造函数更改为
public HomeTabPage()
{
// Set the BindingContext before the page is created!
BindingContext = vm = new HomeTabViewModel();
InitializeComponent();
}
为什么会出现“警告”?
在您发布的代码上,当您创建HomeTabPage
like
public HomeTabPage()
{
InitializeComponent();
BindingContext = vm = new HomeTabViewModel();
}
发生的情况是,HomeTabPage
在为该页面设置BindingContext
之前被初始化。。。但是初始值设定项确实为其基本页面找到了BindingContext
,即您设置为
public HeadingScrollableView()
{
InitializeComponent();
BindingContext = this;
}
因此,由于BindingContext
设置为this
初始值设定项所做的是在源HomeTabPage
或其继承的任何对象中查找路径GearTapBtnCmd
,但未找到该路径:然后显示“警告”
稍后,设置了HomeTabPage
的BindingContext
,一切正常
当您按照我的建议操作时(在页面
初始化之前设置BindingContext
),会立即找到GearTapBtnCmd
,并且不会显示任何警告
为什么“警告”只出现在Android上?
遗憾的是,我没有这个问题的答案,但值得注意的是,警告只在调试时出现,而不是在重建项目时出现(!)。这意味着Android的调试器应该与iOS的调试器有根本的不同,它位于警告的后面。。。要确切了解为什么这种情况只发生在Android中,您可以在GitHub中直接询问Xamarin.Forms开发团队。。。(如果您发现了,请告诉我们)
至于你的问题
有人知道是什么导致了警告信息吗
我想我可能已经给了你一个答案:D可能是因为bindingBindingContext=this代码>在“HeadingScrollableView”类中。检查