سؤال

لدي XAML التالية (المبسطة للإيجاز، ولكن هل ستقوم بتصوير المشكلة في xamlpad أو kaxaml):

<DockPanel Width="400">
    <TextBlock DockPanel.Dock="Left" TextWrapping="Wrap">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        Vestibulum massa metus, ornare in fringilla nec, fringilla at orci.
        Nunc pharetra enim sit amet sapien aliquet eu euismod turpis vehicula.
        Aenean gravida tempus lectus ut ornare. 
            Nullam massa augue, suscipit vel consectetur fringilla, pretium vitae neque.
    </TextBlock>
    <Button MinWidth="100" VerticalAlignment="Center" HorizontalAlignment="Left">Hello world</Button>
</DockPanel>

مشكلتي هي أنني أريد أن يقوم الزر باتخاذ 100px الحد الأدنى من المساحة، وللترقص النص المناسب لمغادرة هذا المساحة. ومع ذلك، ما يحدث هو أن النص يلتف أقرب إلى 400PX ممكن، ثم يتم قص الزر.

إذا قمت بتخفيف الإخراج، فيمكنني أن أرى أن الزر يتجه إلى 100px المطلوب، لكنه يتم عرضه على جانب dockpanel.

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

هل هناك شيء يمكنني القيام به سيجعل DockPanel A) وليس مقطع و ب) تخطيط بطريقة تحترم MINWIDTH؟ أو أنا عالق العثور على آلية تخطيط بديلة؟

شكرا مقدما!

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

المحلول

آه، أنا غبي، وكان يحدق في نفس الكود لفترة طويلة جدا. الحل البسيط البعيد هو استخدام الشبكة:

<Grid Width="400">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="Auto" />
  </Grid.ColumnDefinitions>
  <Button  Grid.Column="1" MinWidth="100" VerticalAlignment="Center" HorizontalAlignment="Left">Hello world</Button>
  <TextBlock TextWrapping="Wrap" Grid.Column="0">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      Vestibulum massa metus, ornare in fringilla nec, fringilla at orci.
      Nunc pharetra enim sit amet sapien aliquet eu euismod turpis vehicula.
      Aenean gravida tempus lectus ut ornare. 
      Nullam massa augue, suscipit vel consectetur fringilla, pretium vitae neque.
  </TextBlock>
</Grid>

اعتذار عن سؤالي السخيف!

نصائح أخرى

يجب أن تكون قفص الاتهام من الزر إلى اليمين واترك textBlock تعبئ الباقي. هنا هو XAML المقابلة:

<DockPanel Width="400">
    <Button DockPanel.Dock="Right" MinWidth="100" VerticalAlignment="Center" HorizontalAlignment="Left">Hello world</Button>
    <TextBlock TextWrapping="Wrap">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.
        Vestibulum massa metus, ornare in fringilla nec, fringilla at orci.
        Nunc pharetra enim sit amet sapien aliquet eu euismod turpis vehicula.
        Aenean gravida tempus lectus ut ornare. 
        Nullam massa augue, suscipit vel consectetur fringilla, pretium vitae neque.
    </TextBlock>
</DockPanel>

أنا في حاجة إليها،
أوليفر هانابي

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