0

私のユーザーコントロールViewUserでは、グループボックスのヘッダーとテキストブロックに UserID が表示されませんか?

メイン ウィンドウ:

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;
    }
}

}

4

2 に答える 2

1

Kirsty さん、 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 番目の部分で意味したことです。

于 2012-04-19T19:30:11.553 に答える
-1

UserID が設定される前に、groupBox1.Header と textBlock1.Text を設定しています。2 つのオプション:

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

また

プロパティから直接設定します。

public string UserID
{
    get { return textBlock1.Text; }
    set
    {
        textBlock1.Text = value;
        groupBox1.Header = value;
    }
}
于 2012-04-19T18:44:49.647 に答える