George Swan
Однажды я написал WPF
приложение, которое загружало 52 "gif" изображения игральных карт в единую сетку. Я выудил часть кода и разместил его здесь в надежде, что он может помочь вам.
Из xaml
.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid HorizontalAlignment="Center" >
<ListView ItemsSource="{Binding CardCollection }" >
<ListView.ItemTemplate>
<DataTemplate >
<Grid HorizontalAlignment="Center" >
<Image Source="{Binding CardGraphic}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel >
<ItemsPanelTemplate>
<UniformGrid Columns="13" HorizontalAlignment="Center" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
С точки зрения модели.
private IEnumerable<Card> LoadImagesFromFile()
{
string fullCardsPath = Path.GetFullPath(Constants.RelativeFilePath);
var filenames = new List<String>(Directory.EnumerateFiles(fullCardsPath, Constants.AllImagesOfType));
return filenames.Select(fileName => new BitmapImage(new Uri(fileName))).Select((cardGraphic, i) => new Card(i, cardGraphic)).ToList();
}
public ObservableCollection<Card> CardCollection
{
get
{
return cardCollection;
}
set
{
cardCollection = value;
NotifyPropertyChanged();
}
}
Класс карт имеет
public int Index { get; private set; }
public BitmapImage CardGraphic { get; private set; }
public Card(int index, BitmapImage cardGraphic)
{
Index = index;
CardGraphic = cardGraphic;
}
В моем случае я определил константы как
public static class Constants
{
public const string RelativeFilePath = @"..\..\Images";
public const string ImageType = ".gif";
public const string AllImagesOfType = "*.gif";
}