2013-04-16 65 views
2

首先用戶控件,看到在主窗口這個代碼更新從主窗口

<Grid x:Name="LayoutRoot" MinWidth="900" MinHeight="650" RenderTransformOrigin="0.5,0.5"> 
     <local:RightSideContent x:Name="rightPanel" Grid.Column="1" Width="Auto" Height="Auto"/> 

    </Grid> 

我創建用戶控件名RightPanel並將其命名爲在MainWindow.xaml rightPanel

實施例,在用戶Control RightPanel有一個TextBlock名稱文本塊。 然後,我想更新TextBlock,並且我在MainWindow中,我必須調用rightPanel.textblock.Text ="..."。所以我認爲這不是一個好的方法,因爲如果我在另一個類,所以我不能回到MainWindow更新這個文本塊,我不能調用一個方法(靜態或非靜態)來MainWindow或RightPanel進行更新。再一次我認爲它不好的原因是,任何時候你都必須交互MainWindow,而我認爲我們應該直接發送消息到RightPanel。

請幫助我,謝謝並原諒我的英語不夠清楚!

回答

3

您可以向您的RightSideContent用戶控件添加依賴屬性以處理文本。這可以讓你直接從你的MainWindow的xaml中綁定它。

然後用戶控件可以將textblock.Text綁定到該依賴屬性,顯示那裏的內容。

2

您可以創建名爲「Text」的Dependency Property,然後將其綁定到MainWindow的DataContext上的屬性。

假設你沒有遵循MVVM模式,那麼你的MainWindow.cs中會有一些屬性,代碼隱藏。例如:

private string _rightSideText = string.Empty; 
public string RightSideText 
{ 
    get { return _rightSideText; } 
    set 
    { 
     _rightSideText = value; 
     OnPropertyChanged("RightSideText"); 
    } 
} 

這是假設你已經在你的主窗口實現INotifyPropertyChanged

然後,在你的主窗口XAML:

<Grid x:Name="LayoutRoot" MinWidth="900" MinHeight="650" RenderTransformOrigin="0.5,0.5"> 
    <local:RightSideContent Text="{Binding Path=RightSideText}" x:Name="rightPanel" Grid.Column="1" Width="Auto" Height="Auto"/> 
</Grid> 

這是假設你已經添加的依賴項屬性。

完成後,只需要更改文本即可設置「RightSideText」。