مشاركة عبر


الإرشادات التفصيلية: ترتيب عناصر تحكم نماذج Windows في WPF

تُظهر هذه الإرشادات التفصيلية كيفية استخدام WPF ميزات تخطيط لترتيب Windows Forms عناصر التحكم في التطبيقات المختلط.

تتضمن المهام الموضحة في هذه الإرشادات التفصيلية ما يلي:

  • إنشاء المشروع

  • باستخدام إعدادات التخطيط الافتراضيه .

  • تغيير حجم المحتوى

  • باستخدام الموضع المطلق .

  • تعيين حجم بوضوح.

  • إعداد خصائص التخطيط .

  • فهم قيود الترتيب التصاعدي.

  • إرساء

  • صواب الرؤية.

  • يستضيف التحكم التي لا تمتد .

  • تحجيم

  • الدوران

  • ترك مساحه الإعداد "و" هوامش ".

  • باستخدام حاويات تخطيط ديناميكى .

للحصول على قائمة كاملة من التعليمات البرمجية للمهام الموضحة في هذه الإرشادات التفصيلية, راجع Hosting a Simple WPF Control in Windows Forms.

عند الانتهاء، يجب التعرف على Windows Forms تخطيط ميزات في WPF - قاعده التطبيقات.

ملاحظةملاحظة

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

المتطلبات الأساسية

تحتاج إلى المكونات التالية لاستكمال هذه الإرشادات التفصيلية:

  • Visual Studio 2008.

إنشاء المشروع

لإنشاء وإعداد المشروع

  1. إنشاء مشروع تطبيق WPF باسم WpfLayoutHostingWf.

  2. في "مستكشف الحلول" قم بإضافة مرجع إلى تجميع WindowsFormsIntegration يسمى WindowsFormsIntegration.dll.

  3. في "مستكشف الحل"، قم بإضافة مرجع إلى تجميع النظام.Windows.Forms، الذي هو المسمى النظام.Windows.Forms.dll. أيضا بإضافة مرجع إلى تجميع النظام.رسم، الذي هو المسمى النظام.رسم.dll.

  4. انقر نقراً مزدوجاً فوق Window1.xaml لفتحها في طريقة العرض XAML.

  5. في بداية الملف قم بتعيين مساحات اسم Windows Forms مع التعليمات البرمجية التالية.

    <Window x:Class="WpfLayoutHostingWfWithXaml.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"  
        Title="Layout Demo for Interoperability"
        >
    
    <Window x:Class="Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"  
        Title="Layout Demo for Interoperability"
        >
    
  6. إعداد افتراضي Grid عنصر عن طريق إنشاء خمس صفوف و ثلاثة أعمدة.

    <Grid ShowGridLines="true">
      <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
      </Grid.RowDefinitions>
    
      <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
    
    <Grid ShowGridLines="True">
      <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
      </Grid.RowDefinitions>
    
      <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
    

باستخدام إعدادات التخطيط الافتراضيه .

افتراضياً، WindowsFormsHost يعالج عنصر تخطيط تمت استضافته Windows Forms التحكم.

لاستخدام تخطيط الإعدادات الافتراضية

  1. قم بنسخ التعليمة البرمجية التالية إلى عنصر Grid.

    <!-- Default layout. -->
    <Canvas Grid.Row="0" Grid.Column="0">
      <WindowsFormsHost Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    <!-- Default layout. -->
    <Canvas Grid.Row="0" Grid.Column="0">
      <WindowsFormsHost Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. يظهر عنصر تحكم Windows FormsSystem.Windows.Forms.Button داخل Canvas . يتم تغيير حجم عنصر التحكم المضيف استناداً إلى المحتوى الخاص به و WindowsFormsHost يتم تغيير حجم عنصر للتوافق مع عنصر التحكم المضيف.

تغيير حجم المحتوى

WindowsFormsHost العنصر يضمن بحجم التحكم المضيف لعرض المحتوى بشكل صحيح.

لتغيير حجم المحتوى

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Sizing to content. -->
    <Canvas Grid.Row="1" Grid.Column="0">
      <WindowsFormsHost Background="Orange">
        <wf:Button Text="Windows Forms control with more content" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    <Canvas Grid.Row="2" Grid.Column="0">
      <WindowsFormsHost FontSize="24" Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    <!-- Sizing to content. -->
    <Canvas Grid.Row="1" Grid.Column="0">
      <WindowsFormsHost Background="Orange">
        <wf:Button Text="Windows Forms control with more content" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    <Canvas Grid.Row="2" Grid.Column="0">
      <WindowsFormsHost FontSize="24" Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. عنصري تحكم زر جديد يتم تغيير حجمها وصولاً إلى العرض سلسلة نصية أطول والخط أكبر حجم بشكل صحيح و WindowsFormsHost يتم تغيير حجم عناصر لتتوافق مع عناصر التحكم المضيفة.

باستخدام الموضع المطلق .

يمكنك استخدام الموضع المطلق لوضع WindowsFormsHost عنصر أي مكان في واجهة المستخدم (UI).

لاستخدام الموضع المطلق

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Absolute positioning. -->
    <Canvas Grid.Row="3" Grid.Column="0">
      <WindowsFormsHost Canvas.Top="20" Canvas.Left="20" Background="Yellow">
        <wf:Button Text="Windows Forms control with absolute positioning" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    <!-- Absolute positioning. -->
    <Canvas Grid.Row="3" Grid.Column="0">
      <WindowsFormsHost Canvas.Top="20" Canvas.Left="20" Background="Yellow">
        <wf:Button Text="Windows Forms control with absolute positioning" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. WindowsFormsHost عنصر يتم وضع 20 بكسل من الجانب العلوي خلية الشبكة و 20 بكسل من اليسار.

تعيين حجم بوضوح.

يمكنك تحديد الحجم WindowsFormsHost عنصر باستخدام Width و Height خصائص.

لتحديد حجم بشكل واضح

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Explicit sizing. -->
    <Canvas Grid.Row="4" Grid.Column="0">
      <WindowsFormsHost Width="50" Height="70" Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    <!-- Explicit sizing. -->
    <Canvas Grid.Row="4" Grid.Column="0">
      <WindowsFormsHost Width="50" Height="70" Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. WindowsFormsHost تعيين العنصر إلى حجم 50 بكسل بكسل 70 عالية ، الذي أصغر من الافتراضي تخطيط إعدادات. المحتوى Windows Forms تحكم إعادة ترتيبه وفقاً لذلك.

إعداد خصائص التخطيط .

تعيين الخصائص المتعلقة بالتخطيط دوماً على تمت استضافته للتحكم وذلك باستخدام الخصائص WindowsFormsHost العنصر. إعداد خصائص تخطيط مباشرة على السيطرة استضيفت سوف تسفر عن نتائج غير مقصودة.

تعيين خصائص التخطيط ذات الصلة على تمت استضافته للتحكم في XAML ليس له تأثير.

لمشاهدة تأثيرات إعداد خصائص على التحكم المضيفة

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Setting hosted control properties directly. -->
    <Canvas Grid.Row="0" Grid.Column="1">
      <WindowsFormsHost Width="160" Height="50" Background="Yellow">
        <wf:Button Name="button1" Click="button1Click" Text="Click me" FlatStyle="Flat" BackColor="Green"/>
      </WindowsFormsHost>
    </Canvas>
    
    <!-- Setting hosted control properties directly. -->
    <Canvas Grid.Row="0" Grid.Column="1">
      <WindowsFormsHost Width="160" Height="50" Background="Yellow">
        <wf:Button Name="button1" Click="button1Click" Text="Click me" FlatStyle="Flat" BackColor="Green"/>
      </WindowsFormsHost>
    </Canvas>
    
  2. فى مستكشف الحلول انقر نقراً مزدوجاً فوق SimpleControl.xaml لفتحها في محرر التعليمات البرمجية.

  3. انسخ التعليمات البرمجية التالية في تعريف فئة Window1بعد الدالة الإنشائيةWindow1().

    Private Sub button1Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim b As System.Windows.Forms.Button = sender
    
        b.Top = 20
        b.Left = 20
    
    End Sub
    
    private void button1Click(object sender, EventArgs e )
    {
        System.Windows.Forms.Button b = sender as System.Windows.Forms.Button;
    
        b.Top = 20;
        b.Left = 20;
    }
    
  4. اضغط F5 لإنشاء التطبيق وتشغيله.

  5. انقر فوق الزر إغلاق button1Click مجموعات معالج الحدث Top و Left الخصائص على استضافة عنصر التحكم. يؤدي عنصر التحكم المضيفه لتغيير موضعها داخل WindowsFormsHost العنصر. المضيف يحافظ على نفس مساحة الشاشة ، ولكن قص تحكم استضافتها. بدلاً من ذلك، تمت استضافته للتحكم يجب دوماً تعبئة WindowsFormsHost العنصر.

فهم قيود الترتيب التصاعدي.

WindowsFormsHost دائماً يتم رسم عناصر البعض مرئية WPF العناصر كما كانت قبل اى لاتتأثر بترتيب.

راجع قيود الترتيب التصاعدي

  1. في ملف Window1.xaml قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد السابق رمز المثال.

    <!-- Z-order demonstration. -->
    <Canvas Grid.Row="1" Grid.Column="1">
      <Label Content="A WPF label" FontSize="24"/>
      <WindowsFormsHost Canvas.Top="20" Canvas.Left="20" Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    <!-- Z-order demonstration. -->
    <Canvas Grid.Row="1" Grid.Column="1">
      <Label Content="A WPF label" FontSize="24"/>
      <WindowsFormsHost Canvas.Top="20" Canvas.Left="20" Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. WindowsFormsHost عنصر تلوين فوق التسمية العنصر .

إرساء

WindowsFormsHost عنصر يدعمWPF الإرساء. تعيين Dock مرفقة خاصيه لإرساء مستضاف عنصر تحكم في DockPanel العنصر.

لإرساء عنصر تحكم مستضاف

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Docking a WindowsFormsHost element. -->
    <DockPanel LastChildFill="false"  Grid.Row="2" Grid.Column="1">
      <WindowsFormsHost DockPanel.Dock="Right"  Canvas.Top="20" Canvas.Left="20" Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </DockPanel>
    
    <!-- Docking a WindowsFormsHost element. -->
    <DockPanel LastChildFill="false"  Grid.Row="2" Grid.Column="1">
      <WindowsFormsHost DockPanel.Dock="Right"  Canvas.Top="20" Canvas.Left="20" Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </DockPanel>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. WindowsFormsHost إرساء عنصر للجانب الأيمن من DockPanel العنصر.

ضبط الرؤية.

يمكنك جعل الخاص بك Windows Forms التحكم غير المرئي أو طيها بواسطة تعيين Visibility خاصيه على WindowsFormsHost العنصر. عندما يكون عنصر تحكم غير مرئي ، لا يتم عرض ، لكنها تحتل مساحة التخطيط. عندما تم طي عنصر تحكم ، لا يتم عرضه ، كما أنها لا تشغل مساحة التخطيط..

لتعيين رؤية عنصر التحكم المضيفة

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Setting Visibility to hidden and collapsed. -->
    <StackPanel Grid.Row="3" Grid.Column="1">
      <Button Name="button2" Click="button2Click" Content="Click to make invisible" Background="OrangeRed"/>
      <WindowsFormsHost Name="host1"  Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
      <Button Name="button3" Click="button3Click" Content="Click to collapse" Background="OrangeRed"/>
    </StackPanel>
    
    <!-- Setting Visibility to hidden and collapsed. -->
    <StackPanel Grid.Row="3" Grid.Column="1">
      <Button Name="button2" Click="button2Click" Content="Click to make invisible" Background="OrangeRed"/>
      <WindowsFormsHost Name="host1"  Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
      <Button Name="button3" Click="button3Click" Content="Click to collapse" Background="OrangeRed"/>
    </StackPanel>
    
  2. فى مستكشف الحلول انقر نقراً مزدوجاً فوق SimpleControl.xaml لفتحها في محرر التعليمات البرمجية.

  3. قم بنسخ التعليمات البرمجية التالية في تعريف فئة Window1 .

    Private Sub button2Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Me.host1.Visibility = Windows.Visibility.Hidden
    End Sub
    
    
    Private Sub button3Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
        Me.host1.Visibility = Windows.Visibility.Collapsed
    End Sub
    
    private void button2Click(object sender, EventArgs e)
    {
        this.host1.Visibility = Visibility.Hidden;
    }
    
    private void button3Click(object sender, EventArgs e)
    {
        this.host1.Visibility = Visibility.Collapsed;
    }
    
  4. اضغط F5 لإنشاء التطبيق وتشغيله.

  5. انقر فوق انقر لجعل غير مرئي زر لجعل WindowsFormsHost مرئية العنصر.

  6. انقر فوق انقر فوق طي صواب لإخفاء WindowsFormsHost العنصر من التخطيط بالكامل. عند Windows Forms مطوياً تحكم ، تتم إعادة ترتيب عناصر المحيطة لتشغل المساحة الخاصة به.

استضافة تحكم لا تمدد .

بعض Windows Formsضوابط لها حجم ثابت ولا تمتد لملء المساحة المتوفرة في التخطيط. على سبيل المثال، MonthCalendar تحكم يعرض شهر في مساحة ثابتة.

لاستضافة عنصر تحكم التي لا تمتد.

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Hosting a control that does not stretch. -->
    <!-- The MonthCalendar has a discrete size. -->
    <StackPanel Grid.Row="4" Grid.Column="1">
      <Label Content="A WPF element" Background="OrangeRed"/>
      <WindowsFormsHost Background="Yellow">
        <wf:MonthCalendar/>
      </WindowsFormsHost>
      <Label Content="Another WPF element" Background="OrangeRed"/>
    </StackPanel>
    
    <!-- Hosting a control that does not stretch. -->
    <!-- The MonthCalendar has a discrete size. -->
    <StackPanel Grid.Row="4" Grid.Column="1">
      <Label Content="A WPF element" Background="OrangeRed"/>
      <WindowsFormsHost Background="Yellow">
        <wf:MonthCalendar/>
      </WindowsFormsHost>
      <Label Content="Another WPF element" Background="OrangeRed"/>
    </StackPanel>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. WindowsFormsHost يتم توسيط عنصر في صف الشبكة ولكن لا يتم تمديد لملء المساحة المتوفرة. إذا كانت نافذة كبيرة بما فيه الكفاية ، قد تشاهد شهرين أو أكثر من عرض MonthCalendar تحكم ، ولكن هذه هي تتمركز في الصف. WPF مشغّل تخطيط توسيط العناصر التي يمكن بحجم لملء المساحة المتوفرة.

تحجيم

بعكس WPF عنصر ، معظم Windows Forms عناصر تحكم غير قابل للتحجيم بشكل مستمر. WindowsFormsHost تحجيم العنصر الخاص به مستضاف التحكم عند الإمكان.

لتوسيع نطاق التحكم للمضيف

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Scaling transformation. -->
    <StackPanel Grid.Row="0" Grid.Column="2">
    
      <StackPanel.RenderTransform>
        <ScaleTransform CenterX="0" CenterY="0" ScaleX="0.5" ScaleY="0.5" />
      </StackPanel.RenderTransform>
    
      <Label Content="A WPF UIElement" Background="OrangeRed"/>
    
      <WindowsFormsHost Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    
      <Label Content="Another WPF UIElement" Background="OrangeRed"/>
    
    </StackPanel>
    
    <!-- Scaling transformation. -->
    <StackPanel Grid.Row="0" Grid.Column="2">
    
      <StackPanel.RenderTransform>
        <ScaleTransform CenterX="0" CenterY="0" ScaleX="0.5" ScaleY="0.5" />
      </StackPanel.RenderTransform>
    
      <Label Content="A WPF UIElement" Background="OrangeRed"/>
    
      <WindowsFormsHost Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    
      <Label Content="Another WPF UIElement" Background="OrangeRed"/>
    
    </StackPanel>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. تمت استضافته للتحكم و تحجيم عناصره المحيطة بواسطة ضعفي عامل 0.5. ومع ذلك، لا يتم تحجيم الخط التحكم في استضافتها.

الدوران

بعكس WPF عنصر ، Windows Forms لا يدعم عناصر تحكم الاستدارة. WindowsFormsHost لم يستدير عنصر مع الأخرى WPF العناصر عند تطبيق تحويل استدارة. أي قيمة الاستدارة من 180 درجة رفع LayoutError الحدث.

لمشاهدة التأثير الاستدارة في تطبيق مختلط

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Rotation transformation. -->
    <StackPanel Grid.Row="1" Grid.Column="2">
    
      <StackPanel.RenderTransform>
        <RotateTransform CenterX="200" CenterY="50" Angle="180" />
      </StackPanel.RenderTransform>
    
      <Label Content="A WPF element" Background="OrangeRed"/>
    
      <WindowsFormsHost Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    
      <Label Content="Another WPF element" Background="OrangeRed"/>
    
    </StackPanel>
    
    <!-- Rotation transformation. -->
    <StackPanel Grid.Row="1" Grid.Column="2">
    
      <StackPanel.RenderTransform>
        <RotateTransform CenterX="200" CenterY="50" Angle="180" />
      </StackPanel.RenderTransform>
    
      <Label Content="A WPF element" Background="OrangeRed"/>
    
      <WindowsFormsHost Background="Yellow">
        <wf:Button Text="Windows Forms control" FlatStyle="Flat"/>
      </WindowsFormsHost>
    
      <Label Content="Another WPF element" Background="OrangeRed"/>
    
    </StackPanel>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. تمت استضافته تحكم لا يتم استدارة ، ولكن يتم تدويرها عناصره المحيطة بواسطة زاوية 180 درجة.

ترك مساحه الإعداد "و" هوامش ".

ترك مساحه وهوامش في WPF تشبه تخطيط لترك الهوامش في Windows Forms. تعيين Padding و ببساطة Margin خصائص على WindowsFormsHost عنصر.

لتعيين ترك المساحه وهوامش لعنصر تحكم المضيفة

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Padding. -->
    <Canvas Grid.Row="2" Grid.Column="2">
      <WindowsFormsHost Padding="0, 20, 0, 0" Background="Yellow">
        <wf:Button Text="Windows Forms control with padding" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    
    ...
    
    
    <!-- Padding. -->
    <!--<Canvas Grid.Row="2" Grid.Column="2">
      <WindowsFormsHost Padding="0, 20, 0, 0" Background="Yellow">
        <wf:Button Text="Windows Forms control with padding" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>-->
    
    
    ...
    
    
    <!-- Margin. -->
    <Canvas Grid.Row="3" Grid.Column="2">
      <WindowsFormsHost Margin="20, 20, 0, 0" Background="Yellow">
        <wf:Button Text="Windows Forms control with margin" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
    
    ...
    
    
    <!-- Margin. -->
    <Canvas Grid.Row="3" Grid.Column="2">
      <WindowsFormsHost Margin="20, 20, 0, 0" Background="Yellow">
        <wf:Button Text="Windows Forms control with margin" FlatStyle="Flat"/>
      </WindowsFormsHost>
    </Canvas>
    
  2. اضغط F5 لإنشاء التطبيق وتشغيله. يتم تطبيق ترك المساحه وإعدادات الهوامش للمضيف Windows Forms عناصر التحكم بنفس الطريقة التي قد يتم تطبيق في مستضاف Windows Forms.

باستخدام حاويات تخطيط ديناميكى .

Windows Forms يوفر حاويتين تخطيط ديناميكة ،FlowLayoutPanel وTableLayoutPanel. يمكنك أيضاً استخدام هذه الحاويات في WPF تخطيطات.

لاستخدام حاوية تخطيط حيوي

  1. قم بنسخ التعليمة البرمجية التالية في Grid عنصر ، بعد رمز المثال السابق.

    <!-- Flow layout. -->
    <DockPanel Grid.Row="4" Grid.Column="2">
      <WindowsFormsHost Name="flowLayoutHost" Background="Yellow">
        <wf:FlowLayoutPanel/>
      </WindowsFormsHost>
    </DockPanel>
    
    <!-- Flow layout. -->
    <DockPanel Grid.Row="4" Grid.Column="2">
      <WindowsFormsHost Name="flowLayoutHost" Background="Yellow">
        <wf:FlowLayoutPanel/>
      </WindowsFormsHost>
    </DockPanel>
    
  2. فى مستكشف الحلول انقر نقراً مزدوجاً فوق SimpleControl.xaml لفتحها في محرر التعليمات البرمجية.

  3. قم بنسخ التعليمات البرمجية التالية في تعريف فئة Window1 .

    Private Sub InitializeFlowLayoutPanel()
        Dim flp As System.Windows.Forms.FlowLayoutPanel = Me.flowLayoutHost.Child
    
        flp.WrapContents = True
    
        Const numButtons As Integer = 6
    
        Dim i As Integer
        For i = 0 To numButtons
            Dim b As New System.Windows.Forms.Button()
            b.Text = "Button"
            b.BackColor = System.Drawing.Color.AliceBlue
            b.FlatStyle = System.Windows.Forms.FlatStyle.Flat
    
            flp.Controls.Add(b)
        Next i
    
    End Sub
    
    private void InitializeFlowLayoutPanel()
    {
        System.Windows.Forms.FlowLayoutPanel flp =
            this.flowLayoutHost.Child as System.Windows.Forms.FlowLayoutPanel;
    
        flp.WrapContents = true;
    
        const int numButtons = 6;
    
        for (int i = 0; i < numButtons; i++)
        {
            System.Windows.Forms.Button b = new System.Windows.Forms.Button();
            b.Text = "Button";
            b.BackColor = System.Drawing.Color.AliceBlue;
            b.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
    
            flp.Controls.Add(b);
        }
    }
    
  4. لاستدعاء InitializeFlowLayoutPanel الأسلوب في المنشئ.

    Public Sub New()
        InitializeComponent()
    
        Me.InitializeFlowLayoutPanel()
    
    End Sub
    
    public Window1()
    {
        InitializeComponent();
    
        this.InitializeFlowLayoutPanel();
    }
    
  5. اضغط F5 لإنشاء التطبيق وتشغيله. WindowsFormsHost عنصر تعبئة DockPanel ، و FlowLayoutPanel ترتيب عناصر التحكم التابعة الخاصة به في الافتراضي FlowDirection.

راجع أيضًا:

المرجع

ElementHost

WindowsFormsHost

المبادئ

اعتبارات التخطيط لعنصر لاستضافة أشكال ويندوز

الإرشادات التفصيلية: استضافة عنصر تحكم Windows Forms في WPF

الإرشادات التفصيلية: استضافة عنصر تحكم WPF في نماذج النوافذ

موارد أخرى

مصمم WPF

ترتيب عناصر تحكم نماذج Windows في نموذج WPF

الترحيل و إمكانية التشغيل المتداخل لمواضيع How-to