2015-05-01 41 views
0

我有一個wpf窗口和一個usercontrol。 WPF窗口調用用戶控件。這裏是代碼:WPF usercontrol缺失代碼

xmlns:local="clr-namespace:Simple_Window" 

<local:WebBrowserTab x:Name="LeftWebBrowserTab" Grid.Column="0" Margin="32, -4, 0, 0" />  

問題是usercontrol正在處理中。這裏是代碼:

public partial class WebBrowserTab : UserControl 
{ 
    public WebBrowserTab(MainWindow main) 
    { 
     InitializeComponent(); 

     _main = main; 
    } 
} 

當打開新的窗口時,將打開一個新的窗口不同。下面是代碼:

NewWindow = new NewWindow(this); 

我如何可以添加this當地local:WebBrowserTab元素?

+0

我假設你想你的主窗口傳遞給構造函數,使您的UserComponent可以訪問主窗口屬性/屬性 – Sidewinder94

+0

這是正確的,則'this'將被用作一個定位。然後'MainWindow main'可以拿起窗戶。 – user3109009

+0

我認爲你這樣做的方式是錯誤的,在用戶控件的情況下,你應該定義幾個'DependencyProperty'來從主窗口接收你需要的數據併發回數據。你已經在WPF中使用過'Bindings'了嗎? – Sidewinder94

回答

0

除非你有一個非常特殊需要在構造函數中使用傳遞Window,它可能會更好(在這個例子中ParentWindow)在UserControl,而不是你現在再綁定有場_main定義DependencyProperty它的窗口。

<local:WebBrowserTab ParentWindow="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" x:Name="LeftWebBrowserTab" Grid.Column="0" Margin="32, -4, 0, 0" /> 

如果沒有更多的情況下,目前還不清楚爲什麼你這樣做,但你也可能能夠單純從控制內找到父窗口

Window.GetWindow(this); 

但像上面的方法,你會無法在構造函數中使用此值。