2017-06-14 31 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

値が常にnullであるため、これは機能しません。私が間違ったことを修正するのを手伝ってください。ありがとう。

+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

側注:1を作成する簡単な方法は、二回「propdp」と、タブを入力することです。それから、あなたの方法を設定してください。あなたは「ユーザ」ではなく「管理者」に関する適用範囲を設定していたことを確認

+0

リンクをお寄せいただきありがとうございました。 私は与えられたコードに従って動作しますが、** OnSetTextChanged **は必要ですか? ** OnSetTextChanged **なしでコードを編集するにはどうすればいいですか? –

+0

更新する必要があるバインディングを持っていない限り、必要はありません。 "新しいPropertyMetaData(" ") – Marsh

+0

私が' new Property MetaData( "") 'に変更すると、結果は常に空になります。 –

0

1.Makeは、そうでなければ、Recoursesへのアクセスを書く必要はありません。 2.データを変更した後、保存方法があることを確認してください。

Properties.Settingsを使用して を書くため。

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

を読み取るための

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

また探検 ソリューションからあなたの特性を管理することができます>これを行うためにあなたのプロジェクト>プロパティ> Settings.settings

0

一つの良い解決策:

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

他にも、などのソリューションがありますまたはカスタムを作成する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);を使うたびに得られます。私が得た結果は常に空です。 –

関連する問題