2

12 個のラベルで構成されるカスタム UserControl を作成しました。

ここに画像の説明を入力

ここで、プログラムが読み込まれると、内容が「デフォルト」のラベルを変更する必要があります。

// This is called in my main forms constructor, right before InitializeComponent()
public void ShowRigInfo()
{
    // This is here because if I try to call PopluateLabels, I get an "Object not
    // set to an instance of object" error
    grdRigInfo = new RigInfoGrid();

    var contractor = SplitString("contractor", _rigInfo);
    var projectName = SplitString("projectname", _rigInfo);
    var location = SplitString("location", _rigInfo);
    var operatorName = SplitString("operator", _rigInfo);
    var rigName = SplitString("rigsite_name", _rigInfo);
    var rigManager = SplitString("rigmanager", _rigInfo);

    grdRigInfo.PopulateLabels(contractor, projectName, location, operatorName,
                              rigName, rigManager);
    }

// A public method of my custom UserControl to update label content
public void PopulateLabels(string contractor, string project, string location, 
                           string operatorName, string rigName, string manager)
{
    lblContractor.Content = contractor;
    lblProjectName.Content = project;
    lblLocation.Content = location;
    lblOperator.Content = operatorName;
    lblRigName.Content = rigName;
    lblRigManager.Content = manager;            
}

私の質問は、プログラムの起動時にラベルを更新するにはどうすればよいですか? 助けてくれてありがとう。

編集

メインフォームのShowRigInfo()前後の両方を呼び出そうとしました。InitializeComponent()どちらもラベルを変更しませんでした。

編集2

さて、実際に答えを見る前にこれを解決しました。私がしたことShowRigInfo()は、メインフォームではなく、カスタム UserControl に移動したことです。最初からそうしなかった理由はわかりませんが、あります。回答の DataBinding 部分を調べます。君たちありがとう。

4

3 に答える 3

3

これは WPF であるため、INotifyPropertyChanged をサポート (実装) する何らかのモデルで、これらのラベルをプロパティにバインドすることをお勧めします。

これらの単語で Google を検索すると、長い道のりを歩むことができます。

于 2012-10-26T14:08:48.030 に答える
2

Loadedイベントハンドラーで試してみませんか

于 2012-10-26T13:50:35.130 に答える
1

AD.Net は正しいです。初期設定を Loaded イベントに配置します。コンストラクターでは、ローカル変数をいじることができますが、通常、ビジュアル要素を操作することはできません。「Loaded」イベントが発生すると、すべての UI コンポーネントを使用できるようになります。

ただし、パブリック メソッドを使用してラベルを設定するのではなく、ラベルに DataBinding と DataContext を使用することを強くお勧めします。最終的に、データグリッド、ツリービュー、およびリストビューを使い始めると、バインドを中心に WPF システムがどのように構築されているかがわかります。

于 2012-10-26T14:09:20.460 に答える