簡體   English   中英

從MainWindow更新用戶控件

[英]Update a User Control from MainWindow

首先,在MainWindow中查看此代碼

    <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

例如,在用戶控件RightPanel中有一個TextBlock名稱為textblock。 然后,我想更新TextBlock並且我在MainWindow中,所以我必須調用rightPanel.textblock.Text ="..."

所以我認為這不是一個好方法,因為如果我在另一個Class中,那么我將無法返回MainWindow更新此文本塊,也無法對MainWindow或RightPanel調用方法(靜態或非靜態)更新。 再次,我認為這不是很好的原因,任何時候您都必須與MainWindow進行交互,而我認為我們應該直接將消息發送到RightPanel。

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

您可以將Dependency屬性添加到RightSideContent用戶控件中以處理文本。 這樣您就可以直接從MainWindow的xaml綁定到它。

RightSideContent用戶控件可以接着剛才綁定textblock.Text到依賴屬性,顯示那里的東西。

您可以創建一個名為“ Text”的依賴項屬性 ,然后將其綁定到MainWindow的DataContext上的屬性。

假設您不遵循MVVM模式,則在MainWindow.cs(后代碼)中將具有一些屬性。 例如:

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

假設您已經在MainWindow上實現了INotifyPropertyChanged

然后,在您的MainWindow 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”即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM