[英]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.