2012-04-19 24 views
0

私のユーザコントロールViewUserのgroupboxヘッダとtextblockにUserIDが表示されていませんか?usercontrolの公開文字列には何も表示されませんか?

メインウィンドウ:

private void btnGeneral_Click(object sender, RoutedEventArgs e) 
{ 

    ViewUser myusercontrol = new ViewUser(); 
    String id = (String)((Button)sender).Tag; 
    myusercontrol.UserID = id; 
    PanelMainContent.Children.Add(myusercontrol); 

} 
private void button1_Click(object sender, RoutedEventArgs e) 
{ 
     string uriUsers = "http://localhost:8000/Service/User"; 
      XDocument xDoc = XDocument.Load(uriUsers); 
      var sortedXdoc = xDoc.Descendants("User") 
          .OrderByDescending(x => Convert.ToDateTime(x.Element("TimeAdded").Value)); 
      foreach (var node in xDoc.Descendants("User")) 
      { 

       Button btnFindStudent = new Button(); 
       btnUser.Click += this.btnGeneral_Click; 
       btnUser.Tag = String.Format(node.Element("UserID").Value); 
       //also tryed btnUser.Tag = node.Element("UserID").Value; 

ユーザーコントロール:

public partial class ViewUser : UserControl 
{ 
    public ViewUser() 
    { 
     InitializeComponent(); 
    } 
    private string _user; 

    public string UserID 
    { 
     get { return _userID; } 
     set { _userID = value; } 
    } 
    protected override void OnInitialized(EventArgs e) 
    { 
     base.OnInitialized(e); 
     groupBox1.Header = UserID; 
     textBlock1.Text = UserID; 
    } 
} 

}

答えて

1

カースティは、あなたが毎回 UserIDプロパティの変更のGroupBoxとのTextBlock を更新する必要があります。

public string UserID 
{ 
    get { return _userID; } 
    set 
    { 
     _userID = value; 
     groupBox1.Header = _userID; 
     textBlock1.Text = _userID; 
    } 
} 

現在、あなたはOnInitializedでGroupBoxとTextBlockを1回だけ更新しています。しかし、OnInitializedは、ViewUserコントロールが初期化された後に一度だけ呼び出され、再びは一度も呼び出されません。

これは、n8wrlが答えの2番目の部分を意味するものです。

-1

ユーザーIDが設定されている前に、あなたがgroupBox1.HeaderとtextBlock1.Textを設定しています。 2つのオプション:

OnPreRenderをオーバーライドしてそこに設定します。

または

があなたの財産から直接それらを設定します。

public string UserID 
{ 
    get { return textBlock1.Text; } 
    set 
    { 
     textBlock1.Text = value; 
     groupBox1.Header = value; 
    } 
} 
+0

base.OnPreRender(e);存在しませんか? –

+0

とonprerenderの適切なメソッドはありません –

+0

ああシュート - WPF私はASP.NETを考えていた。どんなことでも、コントロールライフサイクルには似たものがあると確信しています。プロパティセットオプション – n8wrl

関連する問題