Laden...

[gelöst] mühseliges designen

Erstellt von sowieso vor 15 Jahren Letzter Beitrag vor 15 Jahren 2.211 Views
S
sowieso Themenstarter:in
68 Beiträge seit 2008
vor 15 Jahren
[gelöst] mühseliges designen

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?

_
227 Beiträge seit 2006
vor 15 Jahren

Textboxen kann man da auch per Code "erstellen"

S
sowieso Themenstarter:in
68 Beiträge seit 2008
vor 15 Jahren

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?

3.430 Beiträge seit 2007
vor 15 Jahren

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

S
sowieso Themenstarter:in
68 Beiträge seit 2008
vor 15 Jahren

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?

3.430 Beiträge seit 2007
vor 15 Jahren

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

S
sowieso Themenstarter:in
68 Beiträge seit 2008
vor 15 Jahren

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?

3.430 Beiträge seit 2007
vor 15 Jahren

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

S
sowieso Themenstarter:in
68 Beiträge seit 2008
vor 15 Jahren

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?

3.430 Beiträge seit 2007
vor 15 Jahren

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