Как связать Gridview со словарем в UWP?

Я хочу использовать словарь для привязки данных к xaml, я имею в виду повторение текстового поля и элемента gridview с помощью словаря. Я хочу сгруппировать его по времени, пожалуйста, помогите мне!

Вы можете увидеть изображение:

Код XAML

<Page.Resources>
    <local:CustomDataObject x:Key = "customData"/>
</Page.Resources>
<StackPanel VerticalAlignment = "Top">
    <TextBlock Margin = "10" FontSize = "50">4月2020</TextBlock>
    <GridView SelectionMode = "Single" ItemsSource = "{StaticResource customData}" Margin = "10">
        <GridView.ItemTemplate>
            <DataTemplate>
                <Image Source = "{Binding ImageLocation}" Height = "180" Width = "180" Stretch = "UniformToFill"/>
            </DataTemplate>
        </GridView.ItemTemplate>
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid  Orientation = "Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
    </GridView>
</StackPanel>

Код С#

public class CustomDataObject : List<ImageData>
{

    public CustomDataObject()
    {
        for (int i = 0; i < 10; i++)
        {
            this.Add(new ImageData()
            {
                Title = "Title",
                ImageLocation = "Assets/math.jpg",
                Views = "Views",
                Likes = "Likes",
                Description = "Description"
            });
        }
    }
    public class ImageData
    {
        public string Title { get; set; }
        public string ImageLocation { get; set; }
        public string Views { get; set; }
        public string Likes { get; set; }
        public string Description { get; set; }
    }

}

Не могли бы вы поделиться своими парами ключ-значение в словаре?

Nico Zhu 21.12.2020 09:06

@NicoZhu-MSFT, вы можете использовать значение ключа «key1» List<ImageData> ...

dungtran 21.12.2020 09:23

Хорошо, я вас понял, я сделаю решение.

Nico Zhu 21.12.2020 09:27

Спасибо тебе большое, я тебя жду

dungtran 21.12.2020 09:39
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
4
199
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
Как связать Gridview со словарем в UWP?

Для пар ключ-значение словаря вам нужно сделать GridView вложенным в GridView, как показано ниже. И используйте CollectionViewSource, чтобы сгруппировать DataSource с ключом.

Xaml

<Grid.Resources>
    <CollectionViewSource x:Key = "cvs" x:Name = "cvs" />
</Grid.Resources>
<GridView
    x:Name = "MyListView"
    IsItemClickEnabled = "False"
    ItemsSource = "{Binding Source = {StaticResource cvs}}">
    <GridView.ItemTemplate>
        <DataTemplate>
            <GridView ItemsSource = "{Binding Value}">
                <GridView.ItemTemplate>
                    <DataTemplate>
                        <Image
                            Width = "100"
                            Height = "100"
                            Source = "{Binding}" />
                    </DataTemplate>
                </GridView.ItemTemplate>
            </GridView>
        </DataTemplate>
    </GridView.ItemTemplate>
    <GridView.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text = "{Binding Key}" />
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
        </GroupStyle>
    </GridView.GroupStyle>
</GridView>

Код

private void MessagePage_Loaded(object sender, RoutedEventArgs e)
{
    var list = new List<string>() { "ms-appx:///Assets/img.png",
        "ms-appx:///Assets/img.png" ,
        "ms-appx:///Assets/img.png" ,
        "ms-appx:///Assets/img.png" };

    var items = new Dictionary<string, List<string>>() { { "Hello", list }, { "Some", list }, { "To", list } };   
    var groups = from c in items
                 group c by c.Key;

    this.cvs.Source = groups;
    this.cvs.IsSourceGrouped = true;
}

Привет, ты можешь дать мне полный код или github

dungtran 21.12.2020 10:10

Другие вопросы по теме