سؤال

أنا حاليا حول اللعب مع WPF و الآن أنا أتساءل ما يمكن أن يكون تخطيط نموذجي dataentry نافذة (20+ مربعات النص و الأشياء).

atm أنا باستخدام الشبكة كائن مثل هذا (العينة الأساسية)

    <Grid Margin="2,2,2,2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions >
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>

            <Label Grid.Row="0" Grid.Column="0">Vorname:</Label>
            <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Path=Surname, UpdateSourceTrigger=PropertyChanged}" ></TextBox>

            <Label Grid.Row="1" Grid.Column="0">Nachname:</Label>
            <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding Path=ChristianName, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="2" Grid.Column="0">Strasse (Wohnsitz):</Label>
            <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Path=Street1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="3" Grid.Column="0">Ort (Wohnsitz):</Label>
            <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding Path=Town1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="4" Grid.Column="0">Postleitzahl (Wohnsitz):</Label>
            <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Path=PostalCode1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="5" Grid.Column="0">Bundesland (Wohnsitz):</Label>
            <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding Path=State1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="6" Grid.Column="0">Land (Wohnsitz):</Label>
            <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Path=Country1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

            <Label Grid.Row="7" Grid.Column="0">Zusatz (Wohnsitz):</Label>
            <TextBox Grid.Row="7" Grid.Column="1" Text="{Binding Path=AdditionalAdrInfo1, UpdateSourceTrigger=PropertyChanged}"></TextBox>

    </Grid>

أساسا هذا يرضي جميع تخطيط الاحتياجات ، ولكن ماذا لو كنت ترغب في تغيير شيء ما ، مثل إضافة مربع نص جديد في الصف 3?

حاليا يجب أن تتغير في كل شبكة.الصف الملكية أكبر ثم 3 ، ولكن هذا لا يمكن أن يكون المقصود WPF الطريق! ؟

كيف الآخرين تخطيط مجمع dataentry ويندوز ؟

تيا

هل كانت مفيدة؟

المحلول

لقد كارل Shifflett أيضا مقاربة لطيفة رفع الكرة النماذج في برنامج الأغذية العالمي: <لأ href = "http://karlshifflett.wordpress.com/2008/10/23/wpf-silverlight-lob-form-layout-searching-for -A-أفضل-الحل / "يختلط =" نوفولو noreferrer "> http://karlshifflett.wordpress.com/2008/10/23/wpf-silverlight-lob-form-layout-searching-for-a-better-solution /

نصائح أخرى

بعض الناس استخدام متداخلة StackPanels إلى "حل" هذه المشكلة, ولكن IMHO أن يقدم فقط مشكلة أخرى (رمز سخام).أعتقد أن أفضل طريقة لحل هذه هي كتابة اللوحة الخاصة بك التي تضع الأطفال على التوالي في الأعمدة.أنا فعلت هذا على المشروع السابق ولها عدد من المزايا:

  • أكثر قابلية للقراءة و مقتضب XAML
  • أسهل للحفاظ على XAML
  • أداء أسرع

استخدام بدا شيء من هذا القبيل:

<local:FieldPanel>
    <Label>Field 1:</Label>
    <TextBox/>

    <Label>Field 2:</Label>
    <TextBox/>

    <Label>Field 3:</Label>
    <TextBox/>
</local:FieldPanel>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top