Коллекция посмотреть главное меню xamarin формы - PullRequest
0 голосов
/ 18 марта 2020

Я изучаю Xamarin, у меня есть Xamarin Forms, использующие Collection View. Я хочу создать главное меню на домашней странице в android. Я не могу автоматически изменить элемент представления представления в представлении коллекции.

введите описание изображения здесь

1 Ответ

0 голосов
/ 18 марта 2020

Свяжите ItemTemplate с DynamicResource и измените Resource по нажатию кнопки или там, где вы хотите, чтобы произошло изменение.

  1. Определите шаблоны в ресурсе страницы.
<ContentPage.Resources>
    <DataTemplate x:Key="menuTemplate1">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.3*" />
                <ColumnDefinition Width="0.7*" />
            </Grid.ColumnDefinitions>
            <Image Source="https://i.stack.imgur.com/di65V.jpg?s=328&amp;g=1" />
            <StackLayout Grid.Column="2">
                <Label Text="Hi there" />
                <Label Text="Hi there" />
            </StackLayout>
        </Grid>
    </DataTemplate>
    <DataTemplate x:Key="menuTemplate2">
        <Image Source="https://i.stack.imgur.com/di65V.jpg?s=328&amp;g=1" />
    </DataTemplate>
</ContentPage.Resources>
Инициализировать DynamicResource в Page.Xaml.cs
public MainPage()
{
    InitializeComponent();
    Resources["menuTemplate"] = Resources["menuTemplate1"];
}
Привязать DynamicResource to ItemTemplate`
<CollectionView ItemTemplate="{DynamicResource menuTemplate}" ItemsSource="{Binding ItemCollection}" />
Измените DynamicResource при нажатии кнопки или где вы хотите.
void Button_Clicked(System.Object sender, System.EventArgs e)
{
    if(Resources["menuTemplate"] == Resources["menuTemplate1"])
    {
        Resources["menuTemplate"] = Resources["menuTemplate2"];
    }
    else
    {
        Resources["menuTemplate"] = Resources["menuTemplate1"];
    }
}

UI result

Пожалуйста, проверьте и прокомментируйте любые запрос.

...