У меня есть эта Stackpanel с сеткой, а в сетке много кнопок, содержащих контент для отображения. Элементы упорядочены по алфавиту, и я делаю это вручную. Например, если название игры было бы «Death Row», мне пришлось бы тратить время вручную, перемещая каждый предмет вниз, чтобы я мог освободить место для нового предмета. Вопрос здесь был бы, есть ли способ его организовать, чтобы я мог просто реализовать код между элементами и автоматически его настроить? Как выглядит код: Code Example ImageПо алфавиту Сортировка элементов сетки
ответ
Не используйте DataGrid
для Компоновка динамического контента, а использовать ItemsControl
с DataTemplates
и хранить вам данные в коллекции в ViewModel
, а затем использовать привязки данных для отображения содержимого. Это позволит вам изменить свой сбор данных и обновить свой пользовательский интерфейс.
Пример:
Простой класс для хранения деталей каждой игры:
public class GameViewModel
{
public string Name { get; set; }
public string ImagePath { get; set; }
}
Ваш главный ViewModel:
public class SortedContentViewModel
{
public ObservableCollection<GameViewModel> GameList { get; set; }
public SortedContentViewModel()
{
GameList = new ObservableCollection<GameViewModel>()
{
new GameViewModel() {Name="Brink", ImagePath = @"Resources/brink.png" },
new GameViewModel() {Name="Bulletstorm", ImagePath = @"Resources/bulletstorm.png" }
};
}
}
и ваш XAML:
<UserControl x:Class="Wpf_Playground.Views.SortedContentView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:Wpf_Playground.ViewModels"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
DataContext="{DynamicResource ViewModel}">
<UserControl.Resources>
<vm:SortedContentViewModel x:Key="ViewModel" />
<DataTemplate DataType="{x:Type vm:GameViewModel}">
<Button>
<Grid>
<Image Source="{Binding ImagePath}" Stretch="Fill" />
<Border Background="#66000000" Height="30" VerticalAlignment="Bottom">
<TextBlock Text="{Binding Name}" Margin="10,-2,10,0" VerticalAlignment="Bottom" />
</Border>
</Grid>
</Button>
</DataTemplate>
</UserControl.Resources>
<Grid>
<ItemsControl ItemsSource="{Binding GameList}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
</UserControl>
Спасибо, и я понимаю, как вы это делаете, но ничего не появляется. Вот новый код: [XAML] http://speedcap.net/sharing/files/a0/5d/a05def47065215562e54aad70e59e56f.png [C#] http://speedcap.net/sharing/files/f0/a0/f0a014aa004bc9b38bb8c7de5c219a9e.png , В дополнение к XAML, я поместил DataContext = "{Binding RelativeSource = {RelativeSource Self}}", чтобы он ссылался на себя. – user1953522
Ваша привязка DataContext не работает, как вы думаете. Посмотрите на свое окно и, я уверен, вы видите ошибку привязки. Если вы хотите сделать все это в коде позади, то избавьтесь от своего '' DataContext = ... "' в своем XAML и просто поместите 'this.DataContext = this;' в свой конструктор окна. –
Спасибо. Я понял, что это произошло, так как он работал с другим ListView, который у меня был на форме. – user1953522
- 1. Сортировка элементов по алфавиту
- 2. Сортировка tr элементов по алфавиту
- 3. Сортировка списка элементов по алфавиту
- 4. Сортировка элементов по алфавиту внутри цикла forEach
- 5. Сортировка списка дочерних элементов по алфавиту
- 6. Сортировка по алфавиту
- 7. Сортировка атрибутов HTML по алфавиту
- 8. JavaBeans - Сортировка по алфавиту
- 9. Сортировка кнопок по алфавиту
- 10. Сортировка по алфавиту TextBox.Text
- 11. Сортировка combobox по алфавиту
- 12. Сортировка файла по алфавиту
- 13. DB2 - сортировка по алфавиту
- 14. Сортировка списка по алфавиту
- 15. Сортировка по алфавиту Баш
- 16. Сортировка кортежей по алфавиту
- 17. Сортировка строк по алфавиту
- 18. Сортировка строки по алфавиту
- 19. Сортировка NSArray по алфавиту
- 20. Сортировка NsmutableDictionary по алфавиту
- 21. Сортировка по алфавиту
- 22. Сортировка отбирает по алфавиту
- 23. Сортировка по алфавиту javascript
- 24. Сортировка массивов по алфавиту
- 25. Сортировка по алфавиту ArrayList
- 26. Сортировка результатов по алфавиту
- 27. Сортировка по алфавиту immutable.js
- 28. сортировка по сортировщику по алфавиту
- 29. Сортировка csv-файла по алфавиту
- 30. Сортировка списка имен по алфавиту
Почему Вы публикуете свой код как .png? –