Sooo....ich wollte das Thema heute nochmal angehen. Mir ist noch nicht klar, wie das funktioniert.
In der XAML habe ich folgendes stehen:
<Image x:Name="wuerfel1_img" Grid.Row="6" Grid.Column="2" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" MouseDown="wuerfel1_img_MouseDown"/>
<Image x:Name="wuerfel2_img" Grid.Row="6" Grid.Column="3" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" MouseDown="wuerfel2_img_MouseDown"/>
<Image x:Name="wuerfel3_img" Grid.Row="6" Grid.Column="4" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" MouseDown="wuerfel3_img_MouseDown"/>
<Image x:Name="wuerfel4_img" Grid.Row="6" Grid.Column="5" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" MouseDown="wuerfel4_img_MouseDown"/>
<Image x:Name="wuerfel5_img" Grid.Row="6" Grid.Column="6" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" MouseDown="wuerfel5_img_MouseDown"/>
<Image x:Name="wuerfel6_img" Grid.Row="6" Grid.Column="7" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" MouseDown="wuerfel6_img_MouseDown"/>
Im Code möchte ich dann die Namen ansprechen. Also kein Bild, sondern den Namen und dieses Image Element dann unsichtbar machen.
Derzeit spreche ich die Namen immer einzeln an.
wuerfel1_img.Visibility = Visibility.Hidden;
wuerfel2_img.Visibility = Visibility.Hidden;
wuerfel3_img.Visibility = Visibility.Hidden;
wuerfel4_img.Visibility = Visibility.Hidden;
wuerfel5_img.Visibility = Visibility.Hidden;
wuerfel6_img.Visibility = Visibility.Hidden;
Das würde ich aber gerne mit einer Schleife erledigen, da ich häufiger im Code auf den Namen zurückgreifen muss.
So beispielsweise:
Random zufallszahlen = new Random();
for (int i = 0; i < 6; i++)
{
wuerfel[i] = zufallszahlen.Next(1, 7);
}
if (wuerfel[0] == 1)
{
wuerfel1_img.Source = new BitmapImage(new Uri(@"/Farkle;component/img/wuerfelbild1.png", UriKind.Relative));
}
else if (wuerfel[0] == 2)
{
wuerfel1_img.Source = new BitmapImage(new Uri(@"/Farkle;component/img/wuerfelbild2.png", UriKind.Relative));
}
else if (wuerfel[0] == 3)
{
wuerfel1_img.Source = new BitmapImage(new Uri(@"/Farkle;component/img/wuerfelbild3.png", UriKind.Relative));
}
else if (wuerfel[0] == 4)
{
wuerfel1_img.Source = new BitmapImage(new Uri(@"/Farkle;component/img/wuerfelbild4.png", UriKind.Relative));
}
else if (wuerfel[0] == 5)
{
wuerfel1_img.Source = new BitmapImage(new Uri(@"/Farkle;component/img/wuerfelbild5.png", UriKind.Relative));
}
else if (wuerfel[0] == 6)
{
wuerfel1_img.Source = new BitmapImage(new Uri(@"/Farkle;component/img/wuerfelbild6.png", UriKind.Relative));
}
Das muss ich derzeit 6 Mal machen. Für jeden Würfel einzeln, damit ich direkt den Namen des Elements ansprechen kann.
Ich möchte also kein Bild, sondern die Elemente in ein Array packen.
Geht das?
Edit: Auf der verlinkten Seite wird das Beispiel geben:
TextBox[] textBoxes = new TextBox[] { this.textBox1, this.textBox2, this.textBox3 };
Ich habe ja keine Textbox, sondern Image-Elemente, daher habe ich das probiert:
Image[] wuerfel_images = new Image[] { this.wuerfel1_img, this.wuerfel2_img, this.wuerfel3_img, this.wuerfel4_img, this.wuerfel5_img, this.wuerfel6_img };
Aber stimmt das?
Wenn ich das dort platziere:
InitializeComponent();
Image[] wuerfel_images = new Image[] { this.wuerfel1_img, this.wuerfel2_img, this.wuerfel3_img, this.wuerfel4_img, this.wuerfel5_img, this.wuerfel6_img };
Dann kann ich da nicht drauf zugreifen.
private void Wuerfelunsichtbar()
{
for (int i = 0; i < wuerfel_images.Length; i++)
{
wuerfel_images[i].Visibility = Visibility.Hidden;
}
}
Fehler CS0103 Der Name "wuerfel_images" ist im aktuellen Kontext nicht vorhanden. Farkle C:\Users\Marco\source\repos\Spielereien\Farkle\MainWindow.xaml.cs 84 Aktiv