У меня есть страница mastedetail, и чтобы заполнить меню текстом и значками, я использую просмотр списка, я могу показать заголовок и значки, я хочу, когда человек нажимает на определенную ячейку в представлении списка, и ячейка выбирается. Я хочу, чтобызначок, чтобы изменить, как я могу это сделать?
Я уже пытался использовать два изображения, одно для значка выбора, а другое для значка отмены выбора, но я не знаю, когда ячейка снята, у списка нет этого события.
Спасибо.
MasterDetailPage:
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:viewModels="clr-namespace:Cantina2.ViewModels;assembly=Cantina2"
xmlns:controls="clr-namespace:ImageCircle.Forms.Plugin.Abstractions;assembly=ImageCircle.Forms.Plugin.Abstractions"
x:Class="test2.ViewModels.Views.Menu" Title="Menu1" >
<MasterDetailPage.Master>
<ContentPage Icon="hamburger.png" Title="Menu" BackgroundColor="White">
<ContentPage.BindingContext>
<viewModels:MenuViewModel></viewModels:MenuViewModel>
</ContentPage.BindingContext>
<StackLayout Orientation="Vertical">
<!--left, top, right, bottom-->
<StackLayout BackgroundColor="#01426A" HeightRequest="130">
<controls:CircleImage x:Name="CircleImage" Source="{Binding fotoProf}" Aspect="AspectFill" HorizontalOptions="StartAndExpand" FillColor="Transparent" Margin="15,10,0,0">
<controls:CircleImage.WidthRequest>
<OnPlatform x:TypeArguments="x:Double">
<On Platform="Android, iOS">55</On>
</OnPlatform>
</controls:CircleImage.WidthRequest>
<controls:CircleImage.HeightRequest>
<OnPlatform x:TypeArguments="x:Double">
<On Platform="Android, iOS">55</On>
</OnPlatform>
</controls:CircleImage.HeightRequest>
<!--<controls:CircleImage.GestureRecognizers>
<TapGestureRecognizer
Tapped="OnTapGestureRecognizerTapped"
NumberOfTapsRequired="1" />
</controls:CircleImage.GestureRecognizers>-->
</controls:CircleImage>
<Label Text="{Binding NomeColaborador}" Margin="15,10,0,0" TextColor="White">
<Label.FontSize>
<OnPlatform x:TypeArguments="x:Double">
<On Platform="iOS">12</On>
</OnPlatform>
</Label.FontSize>
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="iOS" Value="OpenSans-Semibold"/>
<On Platform="Android" Value="Calibri.ttf#Calibri"/>
<On Platform="UWP" Value="Assets\Fonts\OpenSans-Semibold.ttf#Open Sans"/>
</OnPlatform>
</Label.FontFamily>
</Label>
<Label Text="{Binding UsernameFormated}" Margin="15,-5,0,0" FontAttributes="Bold" TextColor="#597CBE" IsVisible="True" Opacity="0.50">
<Label.FontSize>
<OnPlatform x:TypeArguments="x:Double">
<On Platform="iOS">12</On>
</OnPlatform>
</Label.FontSize>
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="iOS" Value="OpenSans-Semibold"/>
<On Platform="Android" Value="Calibri.ttf#Calibri"/>
<On Platform="UWP" Value="Assets\Fonts\OpenSans-Semibold.ttf#Open Sans"/>
</OnPlatform>
</Label.FontFamily>
</Label>
</StackLayout>
<ListView x:Name="NavigationDrawerList" RowHeight="60"
SeparatorVisibility="None" BackgroundColor="White"
ItemSelected="OnMenuItemSelected" ItemsSource="{Binding menuLista}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout VerticalOptions="FillAndExpand"
Orientation="Horizontal"
Padding="20,10,0,10" Spacing="20">
<Image x:Name="ListviewMenuIcon" Source="{Binding IconSource}"
WidthRequest="30" HeightRequest="30"
VerticalOptions="Center" />
<Label Text="{Binding Title}"
FontSize="Small"
VerticalOptions="Center"
TextColor="#01426A">
<Label.FontFamily>
<OnPlatform x:TypeArguments="x:String">
<On Platform="iOS" Value="OpenSans-Semibold"/>
<On Platform="Android" Value="Calibri.ttf#Calibri"/>
<On Platform="UWP" Value="Assets\Fonts\OpenSans-Semibold.ttf#Open Sans"/>
</OnPlatform>
</Label.FontFamily>
</Label>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage>
</MasterDetailPage.Master>
<MasterDetailPage.Detail>
<ContentPage></ContentPage>
</MasterDetailPage.Detail>
Menu.xaml.cs
public partial class Menu : MasterDetailPage
{
public ObservableCollection<MenuViewModel> _menuLista;
public Menu()
{
InitializeComponent();
Settings.Page = "Menu";
NavigationPage.SetHasNavigationBar(this, false);
_menuLista = ItemService.GetMenuItems();
NavigationDrawerList.ItemsSource = _menuLista;
Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(Inicio_Menu)));
if (Settings.InicioNavi < 2)
{
Navigation.PopPopupAsync();
}
var seconds = TimeSpan.FromSeconds(0.7);
Xamarin.Forms.Device.StartTimer(seconds,
() =>
{
CheckConnection();
return true;
});
}
public async void CheckConnection()
{
try
{
if (!CrossConnectivity.Current.IsConnected)
{
Settings.InternetCon += 1;
if (Settings.InternetCon < 2)
{
await Navigation.PushPopupAsync(new ConnectionActivityIndicator());
}
}
else
{
if (Settings.InternetCon > 0)
{
Settings.InternetCon = 0;
await Navigation.PopPopupAsync();
return;
}
}
}
catch (Exception)
{
}
}
private async void OnMenuItemSelected(object sender, SelectedItemChangedEventArgs e)
{
if (CrossConnectivity.Current.IsConnected)
{
try
{
var item = (MenuViewModel)e.SelectedItem;
//Obtem o tipo do objeto
Type pagina = item.TargetType;
Settings.Semana = "Current";
Settings.day = "";
string itemResult = item.IconSource;
if (itemResult == "Logout.png")
{
Settings.InicioNavi = 0;
Settings.Username = "";
CrossSecureStorage.Current.DeleteKey("LOGIN");
CrossSecureStorage.Current.DeleteKey("パスワード");
var vHomePage = new LoginUI();
Navigation.InsertPageBefore(vHomePage, this);
await Navigation.PopAsync();
IsPresented = false;
}
else
{
Detail = new NavigationPage((Page)Activator.CreateInstance(pagina));
IsPresented = false;
}
}
catch (Exception)
{
await Navigation.PopPopupAsync();
if (Device.RuntimePlatform == Device.Android)
{
XFToast.ShortMessage("Error");
}
if (Device.RuntimePlatform == Device.iOS)
{
ToastIOS.ShortIOSMessage("Error");
}
}
}
else
{
if (Device.RuntimePlatform == Device.Android)
{
XFToast.ShortMessage("No Connection");
}
if (Device.RuntimePlatform == Device.iOS)
{
ToastIOS.ShortIOSMessage("No Connection");
}
}
}
Спасибо