سؤال

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

أريد أن يكون حجم النص هو الأكبر الممكن سيظل لائقا في حدود السيطرة. في برمجة Windows، يمكنني قياس حجم النص بتناقص حجم الخط حتى يناسب الأبعاد المستهدفة.

هل هناك أي طريقة للقيام بذلك في silverlight؟

أنا أعلم أنني يمكن أن يفترض افعل ذلك بطريقة مماثلة، ولكن هل هناك طرق "أجمل" للقيام بذلك؟

<Grid x:Name="gdBubble" Width="180" Height="95">
    <Ellipse x:Name="elBubble" Fill="#FFFFA300" />
    <TextBlock x:Name="txtContent" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>

أنا أستخدم شبكة هنا من أجل مركز TextBlock للمركز بشكل صحيح.

كان الجواب غنيا موصوفا باستخدام صندوق رأي.

كان هذا هو التكوين الفائز (بالنسبة لي):

<Grid x:Name="gdBubble" Width="180" Height="95">
    <Ellipse x:Name="elBubble" Fill="#FFFFA300" />
    <controls:Viewbox Margin="10,10,10,10" VerticalAlignment="Stretch" Height="Auto">
        <TextBlock x:Name="txtContent" FontSize="18" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </controls:Viewbox>
</Grid>
هل كانت مفيدة؟

المحلول

تم طرح سؤال مماثل أمس حول تغيير حجم المحتوى بالنسبة لحجم الحاوية. الجواب في هذه الحالة هو نفسه: استخدم صندوق عرض. إذا قمت بوضع TextBlock الخاص بك داخل صندوق الرؤية، فسيقوم TextBlock بتغيير حجم نفسها لاستخدام احتياجات المساحة التي يحتاجها المساحة، وسيتعامل Viewbox مع امتداد هذا إلى أبعاد الحاوية. استخدم سمة التمدد للاختيار من بين إحدى طرق التمدد الأربعة.

ألق نظرة على هذا الموضوع من أمس:

WPF واجهة المستخدم الرسومية التي تتغير حجم مع النافذة؟

نصائح أخرى

جرب dockpanel. بدلا من الشبكة. باستخدام Lastchildfill = صحيح يجب أن تحصل على السلوك الذي تبحث عنه.

هل نظرت إلى تحويل التنسيق الإقليم؟

IB.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top