Hi!
Es gibt eine Sache, die nervt mich bei wpf. sagen wir, ich möchte ein 9x9 schachbrett designen, dann muss ich in xaml jeder einzelnen textbox ein name zuweisen usw. wenn ich in c# mit windows forms designe, kann das zb eine for schleife machen lassen.
meine frage: kann man sowas in der art auch in wpf, oder muss ich da wirklich alles manuell schreiben?
textboxen selber? ja, aber es geht mir hier um ein schachbrett, dass ich eben manuell nach dem schema
<TextBox Name="textBox_1_11" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_12" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_13" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_21" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_22" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_23" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_31" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_32" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
usw. usw. usw. (es geht hier nur ums prinzip) erstellen muss.
in windows forms könnte ich mit c# hierfür eine forschleife nehmen, die mir die arbeit abnimmt. meine frage also: geht sowas auch in wpf?
Hallo sowieso,
textboxen selber?
Du hast im ersten Beitrag selbst von Textboxen geredet, aber was die in einem Schachbrett zu suchen haben ist mir unklar.
Ein Schachbrett machst du am Besten mit dem Grid (9 Rows, 9 Columns).
Diesen kannst du dann den Background geben und anpassen was du willst.
Du kannst auch vom C# code aus, auf die Controls zugreifen, dann kannst du das selbe machen, was schon zu WinForms-Zeiten möglich war.
Gruss
Michael
ich will da aber textboxes drin haben, denn der benutzer soll in jedes feld etwas reinschreiben können.
und nun frage ich mich, ob ich wirklich sowas selbst schreiben muss:
<Window x:Class="Chess.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid Name="grid_a">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid Name="grid_b1" Grid.Column="0" Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_1_11" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_12" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_13" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_21" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_22" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_23" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_31" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_32" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_1_33" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Grid Name="grid_b2" Grid.Column="0" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_2_14" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_2_15" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_2_16" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_2_24" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_2_25" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_2_26" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_2_34" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_2_35" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_2_36" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Grid Name="grid_b3" Grid.Column="0" Grid.Row="2">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_3_17" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_3_18" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_3_19" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_3_27" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_3_28" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_3_29" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_3_37" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_3_38" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_3_39" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Grid Name="grid_b4" Grid.Column="1" Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_4_41" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_4_42" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_4_43" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_4_51" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_4_52" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_4_53" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_4_61" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_4_62" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_4_63" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Grid Name="grid_b5" Grid.Column="1" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_5_44" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_5_45" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_5_46" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_5_54" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_5_55" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_5_56" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_5_64" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_5_65" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_5_66" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Grid Name="grid_b6" Grid.Column="1" Grid.Row="2">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_6_47" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_6_48" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_6_49" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_6_57" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_6_58" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_6_59" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_6_67" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_6_68" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_6_69" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Grid Name="grid_b7" Grid.Column="2" Grid.Row="0">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_7_71" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_7_72" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_7_73" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_7_81" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_7_82" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_7_83" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_7_91" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_7_92" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_7_93" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Grid Name="grid_b8" Grid.Column="2" Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_8_74" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_8_75" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_8_76" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_8_84" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_8_85" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_8_86" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_8_94" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_8_95" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_8_96" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Grid Name="grid_b9" Grid.Column="2" Grid.Row="2">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Name="textBox_9_77" Grid.Column="0" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_9_78" Grid.Column="0" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_9_79" Grid.Column="0" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_9_87" Grid.Column="1" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_9_88" Grid.Column="1" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_9_89" Grid.Column="1" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_9_97" Grid.Column="2" Grid.Row="0" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_9_98" Grid.Column="2" Grid.Row="1" MaxLength="1" FontSize="15" TextAlignment="Center" />
<TextBox Name="textBox_9_99" Grid.Column="2" Grid.Row="2" MaxLength="1" FontSize="15" TextAlignment="Center" />
</Grid>
<Rectangle Name="rectangle_1" Stroke="Black" Grid.Column="0" Grid.Row="0" />
<Rectangle Name="rectangle_2" Stroke="Black" Grid.Column="0" Grid.Row="1" />
<Rectangle Name="rectangle_3" Stroke="Black" Grid.Column="0" Grid.Row="2" />
<Rectangle Name="rectangle_4" Stroke="Black" Grid.Column="1" Grid.Row="0" />
<Rectangle Name="rectangle_5" Stroke="Black" Grid.Column="1" Grid.Row="1" />
<Rectangle Name="rectangle_6" Stroke="Black" Grid.Column="1" Grid.Row="2" />
<Rectangle Name="rectangle_7" Stroke="Black" Grid.Column="2" Grid.Row="0" />
<Rectangle Name="rectangle_8" Stroke="Black" Grid.Column="2" Grid.Row="1" />
<Rectangle Name="rectangle_9" Stroke="Black" Grid.Column="2" Grid.Row="2" />
</Grid>
</Window>
oder kann ich nicht irgendwie mithilfe von c# code mein feld erstellen?
Hallo sowieso,
wie bereits schon von mir und meinem Voredner beschrieben kann man das auch per C# machen.
Und das geht gleich wie in Winforms, auch Google hätte dir da helfen können.
Hier ein Beispiel:
Button btn = New Button();
btn.Content = "Foo";
myStackPanel.Children.Add(btn);
Dann kannst du ja einfach in einer Schleife die einzelnen TextBoxen erstellen und in dein Grid oder was auch immer schreiben.
Gruss
Michael
ah, ok, dann hatte ich das falsch verstanden.
das ist schon mal super! ich frage mich allerdings gerade, wie in in c# auf die Grid.Column Eigenschaft einer textbox zugreifen kann (die ich in xaml ohne probleme setzen kann). auf andere eigenschaften wie FontSize kann ich auch in c# ohne probleme zugreifen...
jemand eine Idee?
Hallo sowieso,
das kannst du so machen:
Grid.SetColumn(textbox1,0);
Grid.SetRow(textbox1,0;
textbox1 wäre deine TextBox
0 steht für den Index der Spalte bzw Zeile
Gruss
Michael
ah, über eine statische Funktion läuft das. danke!
wenn ich nun eine GUI fast ausschließlich über c# code designe, wie in unserem beispiel, ist es dann nicht eigentlich sinnvoller, gleich eine windows-forms-anwendung zu programmieren?
Hallo sowieso,
wenn ich nun eine GUI fast ausschließlich über c# code designe, wie in unserem beispiel, ist es dann nicht eigentlich sinnvoller, gleich eine windows-forms-anwendung zu programmieren?
Nö, auch wenn du es mit C# erstellst kannst du immer noch die Vorteile von WPF nutzen.
Denn eine Grundregel lautet: "In WPF kann man im C# Code alles machen was man auch im XAML-Code machen kann (umgekehrt geht das nicht immer)"
Gruss
Michael