Xamarin.Forms实现。
我在所有页面上都有主页按钮,并已在一个文件中实现它,并在所有页面上呈现它。
现在,我的要求是,如果用户位于主页上,并且如果他单击主页图标,则什么也不会发生,即不应通过轻拂页面导航到主页(这是当前的实现)。
我尝试了逻辑上的其他问题,但可能并非如此。 (即)
if
{
//user on home page. Do nothing.
}
else
{
//navigate to Home.
}
这是我用点击手势命令显示的图片
<Image Grid.Row="0" Grid.Column="0" Source="OneD_Icon_Small.png" HorizontalOptions="StartAndExpand" Margin="5,5,0,0">
<Image.GestureRecognizers>
<TapGestureRecognizer Command="{Binding HomeCommand}" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
答案 0 :(得分:0)
在每个contentPage.xaml
中
设置contentPage的名称并将其作为CommandParameter的参数传递
例如在MainPage中
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:App12"
x:Name="myPage"
x:Class="App12.MainPage">
<StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" >
<Image Source="OneD_Icon_Small.png" HorizontalOptions="StartAndExpand" Margin="5,5,0,0">
<Image.GestureRecognizers>
<TapGestureRecognizer Command="{Binding HomeCommand}" CommandParameter="{Binding .,Source={x:Reference myPage}}" NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
</StackLayout>
</ContentPage>
在ViewModel中
public class TapViewModel : INotifyPropertyChanged
{
ICommand homeCommand;
public TapViewModel()
{
// configure the TapCommand with a method
homeCommand = new Command(OnTapped);
}
public ICommand HomeCommand
{
get { return homeCommand; }
}
public event PropertyChangedEventHandler PropertyChanged;
void OnTapped(object s)
{
var page = s as ContentPage;
if (page.GetType() == typeof(MainPage))
{
//user on home page. Do nothing.
}
else
{
//navigate to Home.
}
}
}
注意:对象s是contentPage,您可以执行所需的操作。