簡體   English   中英

如何在運行時將值從窗口傳遞給用戶控件?

[英]How to passing value from window to usercontrol at runtime?

這是我應該在哪里獲取數據的用戶控制代碼:

這是我應該在哪里獲取數據的用戶控制代碼

這是我包含用戶控件並將其值設置為屬性的主窗口:

這是我在其中包含用戶控件並將值設置為屬性的主窗口。

由於該值始終為null,因此無法使用。 請幫助糾正我做錯的任何事情。 謝謝。

據我所知,您似乎需要使用依賴項屬性。 這將替換您擁有的GetMyValue屬性。

查看此示例以獲取自定義依賴項屬性。

https://www.tutorialspoint.com/wpf/wpf_dependency_properties.htm

旁注:一種簡單的輸入方法是鍵入“ propdp”,然后兩次制表符。 然后通過設置方式進行選擇。

1.確保您將范圍設置為“用戶”而非“管理員”,否則您將無權訪問資源。 2.確保在修改數據后有保存方法。

用於使用Properties.Settings編寫;

Settings.Default.myProperty = myValue;
Settings.Default.Save();

閱讀

String myValue = Settings.Default["myProperty"].ToString();

您還可以從解決方案瀏覽器>項目>屬性>設置來管理屬性。

一個好的解決方案:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    var control = new UserControl1();
    control.GetMyValue = "HelloWorld";
    grid1.Childern.Add(control);
}

還有其他解決方案,例如綁定DataContext或創建自定義DependencyProperty

在設置GetMyValue屬性之前創建UserControl 創建實例之前,無法設置實例的屬性...

等待直到UserControl加載完畢,您將獲得預期的值:

public UserControl1()
{
    InitializeComponent();
    Loaded += (s, e) =>
    {
        string finalValue = GetMyValue;
    };
}

您需要創建Dependency屬性。 沒有什么難做的:

首先,您需要注冊:

public static readonly DependencyProperty GetMyValueProperty =
            DependencyProperty.Register("GetMyValue", typeof(string), 
            typeof(UserControl1), new UIPropertyMetadata(string.Empty));  

然后創建自動屬性:

public string GetMyValue
        {
            get { return (string )GetValue(GetMyValueProperty ); }
            set { SetValue(GetMyValueProperty , value); }
        }

就是這樣,只需將示例復制到UserControl1類中即可。

暫無
暫無

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

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