التعامل مع مختلف أحجام الخط نظرا لخصائص العرض في WPF التطبيقات؟

StackOverflow https://stackoverflow.com/questions/811217

  •  03-07-2019
  •  | 
  •  

سؤال

ومجموعتي هو بناء التطبيق محرر من نوع في برنامج الأغذية العالمي. شيء واحد لاحظنا أن على آلة ويندوز إكس بي، التي تعمل مع موضوع "ويندوز النمط الكلاسيكي"، والنص على أزرار هو يناسب غرامة. ولكن على جهاز صديقي الذي يتم تشغيله تحت شعار "ويندوز إكس بي على غرار" حجم الخط أكبر ذلك النص على أزرار الحصول على قص في الأسفل.

هل هناك طريقة للتعامل مع هذا لطيف، مثل تغيير حجم الضوابط تلقائيا لتتناسب مع النص؟

وأنا أتردد لتغيير يدويا على زر لتناسب تخطيط له مثل أي شخص آخر يمكن أن يكون إعدادات مختلفة تماما من خلال خصائص العرض وخيارات التشغيل.

وشكرا!

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

المحلول

وزر WPF <م> سوف تغيير حجم تلقائيا لتتناسب مع المحتوى الذي تم منحها، ومع ذلك انها لن تفعل ذلك إلا عندما يكون داخل الحاوية التي لا تفرض حجم ولم يتم تعيين حجمها يدويا. لإثبات هذه الفوضى حولها مع حجم الخط في التعليمات البرمجية المتكررة التالية:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Button
        Grid.Column="1"
        Grid.Row="1"
        FontSize="24"
        Content="QWERTY"/>
</Grid> 

وانا اعتقد ان الأزرار الخاصة بك لم حجمها لأنك مقيدة لهم. لإصلاح هذا عليك أن تقرر كيف تريد منهم لتغيير (التي يمكن أن تكون معقدة للغاية عندما عناصر ستتداخل اذا كانوا مجرد نمت على نحو أعمى)، وإذا كان أي من أنواع لوحة زودت أداء سلوك النمو الذي كنت تبحث عن ثم قد تحتاج لكتابة بنفسك أن يفعل.

نصائح أخرى

هل أحجام عنصر ضمنية باستخدام العرض والارتفاع خصائص؟ في WPF الطريقة الموصى بها للقيام بذلك هو استخدام عدة حاويات التخطيط.

وفيما يلي مثال على الشبكة الذي يضع اثنين من الأزرار في أسفل والنص في الأعلى.

<Grid>
    <Grid.RowDefinitions>
        <!-- TextBox row with unspecified height. -->
        <RowDefinition Height="*"/>

        <!-- Button row with automated height so it resizes to
             fit the content -->
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <!-- Textbox on first row. -->
    <TextBox Margin="3" Name="textBox1" Grid.Row="0" AcceptsReturn="True" />

    <!-- StackPanel which lays the two buttons at the bottom horizontally.
         RightToLeft is specified so that the first button appears on right.
         -->
    <StackPanel Grid.Row="1" HorizontalAlignment="Right"
                Orientation="Horizontal" FlowDirection="RightToLeft">

        <!-- The buttons. Only padding and margin are hardcoded so these
             can resize to the contents -->
        <Button Padding="3" Margin="3">OK</Button>
        <Button Padding="3" Margin="3">Cancel</Button>
    </StackPanel>
</Grid>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top