Почему Xamarin.Form CollectionView не показывает данные привязки в платформе WPF? - PullRequest
1 голос
/ 09 февраля 2020

Я пытаюсь изучить Xamarin.Form на Android и платформах WPF. Я использую очень простую наблюдаемую коллекцию в качестве привязки данных в файле ViewModel. Привязка данных работает правильно на платформе Android, но на платформе WPF ничего не отображается! Другие элементы управления, такие как кнопки и метки, работают правильно в платформе WPF. В режиме отладки кнопка, которая заполняет коллекцию, также работает, когда я запускаю WPF как проект по умолчанию.

Коды файлов ViewModel

public sealed class MainPageViewModel : INotifyPropertyChanged
{
    public ObservableCollection<string> Test { get; set; } = new ObservableCollection<string>();
    public Command LoadCommand { get; }

    public MainPageViewModel()
    {
        LoadCommand = new Command(() =>
        {
            for (int i = 0; i < 10; i++)
            {
                Test.Add(i.ToString());
            }
        });

    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

Коды файлов MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?>

<ContentPage.BindingContext>
    <local:MainPageViewModel />
</ContentPage.BindingContext>

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Label
        Grid.Row="0"
        Grid.Column="0"
        Grid.ColumnSpan="2"
        HorizontalOptions="Center"
        Text="Select one of the items below."
        VerticalOptions="CenterAndExpand" />

    <Button
        Grid.Row="1"
        Grid.Column="1"
        Command="{Binding LoadCommand}"
        Text="test" />

    <CollectionView
        Grid.Row="2"
        Grid.Column="0"
        Grid.ColumnSpan="2"
        ItemsSource="{Binding Test}">
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <StackLayout>
                    <Frame>
                        <Label Text="{Binding .}" />
                    </Frame>
                </StackLayout>
            </DataTemplate>
        </CollectionView.ItemTemplate>

    </CollectionView>
</Grid>

Есть предложения?

1 Ответ

2 голосов
/ 10 февраля 2020

Я ищу некоторую информацию об использовании Collectionview в WPF, но из этой статьи collectionview мы видим, что CollectionView доступно на iOS и Android, но доступно только на универсальная Windows платформа , поэтому я думаю, что она не работает в WPF.

Но если вы можете использовать ListView для замены CollectionView, он может нормально работать при использовании Binding.

О добавлении проекта WPF в решение Xamarin.Forms вы можете посмотреть:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/other/wpf

Это образец:

https://github.com/techierathore/TrXamGuide

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...