2017-06-14 67 views
0

這背後是我應該得到的數據我的用戶控件代碼:如何在運行時將值從窗口傳遞給usercontrol?

This is my user control code behind where I should get the data

這是我的,我包括在用戶控制主窗口和值設置爲屬性:

This is my main window where I included the user control and set the value to the property

這不起作用,因爲該值始終爲空。請幫助糾正我做錯的任何事情。謝謝。

+0

從下次開始發佈實際代碼而不是圖像。 –

回答

0

UserControl在設置GetMyValue屬性之前創建。直到UserControl已加載你不能設置一個實例的屬性已創建之前...

等待,你將獲得價值預期:

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

謝謝..這就像一個魅力。雖然我很想知道使用這種方式是更好還是以@Marsh的方式顯示。使用這個或另一個的優點是什麼? –

+0

您不需要定義屬性作爲依賴項屬性只是爲了能夠得到它的值... – mm8

0

就我所知,它看起來像您需要使用依賴項屬性。這將取代您擁有的GetMyValue屬性。

請查看此示例以瞭解自定義依賴項屬性。

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

側面說明:一個快速的方法,使一個是輸入「propdp」,然後標籤的兩倍。然後按照你的方式設置它。

+0

感謝您的鏈接和附註非常有幫助。 我遵循給定的代碼,它的工作原理是** OnSetTextChanged **是必要的嗎?如何在沒有** OnSetTextChanged **的情況下編輯代碼。 –

+0

這是沒有必要的,除非你有一個綁定,需要更新。如果沒有它,只需刪除「,新的PropertyChangedCallback(OnSetTextChanged)。然後你會有新的」新的PropertyMetaData(「」) – Marsh

+0

當我改變到'新的屬性元數據(「」)'我得到的結果總是空的。 –

0

1.確保您已將範圍設置爲'用戶'而不是'管理員',否則您將無法寫入訪問權限。 2.確保在修改數據後有保存方法。

使用Properties.Settings寫入 ;

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

用於讀取

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

您也可以從 解決方案管理您的屬性探索>您的項目>屬性> Settings.settings

0

一個很好的這樣做的解決方案:

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

還有其他解決方案,如Binding DataContext或製作自定義DependencyProperty

0

您需要創建依賴屬性。有沒有很難做到:

首先,你需要註冊:

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類。

+0

''UIPropertyMetadata(string.Empty));' 這行代碼給我錯誤和我只能使用** PropertyMetadata ** ...問題是每當我使用'PropertyMetadata(string.Empty);'我得到的結果總是空的。 –

相關問題