1

Windowsフォームアプリケーションがあり、フォームのコントロールの1つはWPFユーザーコントロールです。Windowsフォームに要素ホストコントロールを配置しました。これにより、起動時にユーザーコントロールが読み込まれます。

私が欲しいのは、特定の時間にユーザーコントロールをロードして更新することです。新鮮なデータをロードする必要があるので。

私は試しましたがelementHost1.Refresh();、これは何もしていません。

これをロードして更新するにはどうすればよいですか?

これは、このLINKでの私のユーザーコントロールです

4

4 に答える 4

2

データプロバイダーにソースを再読み込みさせます。

var dataprovider = (System.Windows.Data.XmlDataProvider) (
  ((UserControl1) (elementHost1.Child)).Resources ["rssData"]
);
dataprovider.Refresh ();
于 2012-05-31T22:07:24.530 に答える
0

ロードイベントを再度呼び出すとどうなりますか?

または、少なくとも、データをフォームに入力するために使用しているメソッド>

つまり、を呼び出しますthis.Load(null,null)(または必要に応じていくつかのオブジェクトまたはイベントを渡します)

private void form1_load(object o, EventArgs e)
{
    BindDataToControlMethod();
}

または、コードをリファクタリングして、メソッドを呼び出すことができるようにしますBindDataToControlMethod()

発信しているelementHost1.Refresh()呼び出しは、画面にフォームを再描画するだけです。それ自体はリロードしません。

于 2012-05-30T19:55:13.167 に答える
0

コントロールは自動的に更新されないため、データバインディングを使用しないと想定します。これが最善の解決策となる可能性があります。

MyButtonという名前のボタンをホストする(カスタム)タイプUserControl1のユーザーコントロールがあるとします。

新しいWPFコントロールを作成し、それを子要素に割り当てることができます。

((UserControl1) (elementHost1.Child)).MyButton = new System.Windows.Button ()

または、次のようにWPFコントロールにアクセスします

var wpfButton = ((UserControl1) (elementHost1.Child)).MyButton;

次に、WPFコントロールの必要なプロパティをリセットするだけです。

wpfButton.Content = "My new text";

編集:間違いを修正しました。

于 2012-05-31T21:38:52.183 に答える
0

MVVMとはどうINotifyPropertyChangedですか?を使用INotifyPropertyChangedすると、データが変更されたときにViewに通知し、この方法で更新できます。このようにあなたが望むものです。


いくつかの関連リンクを見てください:

于 2012-05-31T21:27:24.543 に答える