Ich arbeite an der Erstellung des Kartenspiels "Memory" in WPF. Ich habe Probleme auf der UI-Seite davon. Ich habe es so eingerichtet, dass, wenn der Benutzer einen Schwierigkeitsgrad auswählt, er dynamisch die Größe des Decks einstellt (4x4 für einfach, woran wir arbeiten werden/worüber wir sprechen werden, um den Konzeptnachweis zu führen). Wie erlaube ich die dynamische Änderung des Gitters bei der Auswahl verschiedener Schwierigkeiten?Dynamische Dimensionierung 2 Dimensional Grid
Hier können Sie die Schwierigkeit (Alle Karten sind für Testzwecke ..) eingestellt
private void SetDifficulty(Difficulty difficulty) {
//Clearing CardList
CardList.Clear();
//Switching on the diff
switch (difficulty) {
case Difficulty.Easy:
CardList = new ObservableCollection<Card>{
new Card {
Image = Resources.Bowser
},
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card(),
new Card()
};
break;
case Difficulty.Medium:
break;
case Difficulty.Hard:
break;
default:
throw new ArgumentOutOfRangeException(nameof(difficulty), difficulty, null);
}
}
XAML:
<Window x:Class="MemoryGame.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MemoryGame.Views"
xmlns:viewModels="clr-namespace:MemoryGame.ViewModels"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance viewModels:MemoryGameViewModel}"
Title="MainView" Height="300" Width="300">
<Grid ShowGridLines="True">
<ListBox ItemsSource="{Binding Path=CardList}">
<ListBox.ItemTemplate>
<DataTemplate DataType="viewModels:Card">
<StackPanel Orientation="Horizontal" Width="50" Height="50" >
<!--<Image Source="/Pictures/Luigi.jpg"></Image>-->
<Button Content="{Binding Image, UpdateSourceTrigger=PropertyChanged}" Margin="5" Height="50" Width="50">
</Button>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
Warum nicht initialisiert werden sie in einem for-Schleife? – Everyone
ist es wahrscheinlich einfacher, UniformGrid, z.B. ' UniformGrid>'. Die Spalten- und Zeileneigenschaften unterstützen die Bindung, die Änderung der Quellwerte und die Boardgröße wird aktualisiert. –
ASh
Ich plante dies, ich fügte sie nur zum Testen hinzu, aber die Schleife wäre noch einfacher gewesen. – ReRoute