2017-06-15 8 views
0

内側のボタンをクリックしたときに、私はこのは1つがWindowsFormHost

<Window x:Class="WPFSort.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WPFSort" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <WindowsFormsHost HorizontalAlignment="Left" Height="Auto" 
          Margin="87,43,0,0" VerticalAlignment="Top" Width="Auto"> 
      <local:SimpleWinControl /> 
     </WindowsFormsHost> 

    </Grid> 
</Window> 

ようなもので、windowsFormHostコントロールをホストとSimpleWinControlのために、それはのWinFormコントロールであるWPFダイアログを、持っているWPFダイアログを閉じます。 button 1をクリックすると、私は、WPFダイアログがWPFダイアログを呼び出すWPFフォームに「配る」ことを

  • とデータimportantdataを閉じることが

    1. をしたいですか? Button制御公開し

      public partial class SimpleWinControl : UserControl 
      { 
          public SimpleWinControl() 
          { 
           InitializeComponent(); 
          } 
      
          public object importantdata; 
      
          private void button1_Click(object sender, EventArgs e) 
          { 
           //how should I write the close and pass the importantdata out 
      
          } 
      } 
      
  • 答えて

    1

    あなたは、たとえば、あなたのWinFormsコントロールにプロパティを追加することができます。

    public partial class SimpleWinControl : UserControl 
    { 
        public SimpleWinControl() 
        { 
         InitializeComponent(); 
        } 
    
        public Button TheButton { get { return button1; } } 
    
        ... 
    } 
    

    がリサイズを与えるには、あなたのXAMLマークアップでx:Nameを制御します。

    <WindowsFormsHost HorizontalAlignment="Left" Height="Auto" Margin="87,43,0,0" VerticalAlignment="Top" Width="Auto"> 
        <local:SimpleWinControl x:Name="winFormsControl" /> 
    </WindowsFormsHost> 
    

    ... ClickのフックまでのイベントあなたのWPFダイアログウィンドウのコードビハインドで:

    public partial class Dialog : Window 
    { 
        public Dialog() 
        { 
         InitializeComponent(); 
         winFormsControl.TheButton.Click += (s, e) => this.Close(); 
        } 
    } 
    

    その後、一度importantdataフィールドShowDialogメソッドの戻りにアクセスできるダイアログが開き窓:

    private void ShowDialog_Click(object sender, RoutedEventArgs e) 
    { 
        Dialog d = new Dialog(); 
        d.ShowDialog(); 
    
        object importantData = d.winFormsControl.importantdata; 
    } 
    

    別のオプションは、調達することであってもよいですWinFormsコントロールからのイベント:https://msdn.microsoft.com/en-us/library/5z57dxz2(v=vs.90).aspx

    関連する問題