1

button2 のクリックイベントで button1 の内容を変更したい。しかし、List<> UiList にあるグリッドの子 Button クラスのオブジェクトを取得できません。 それを見て解決するための正しいアプローチを得るために私を導いてください。また、オブジェクトが実行時にビルドされている場合、それにアクセスする方法も教えてください。

public partial class MainPage :   PhoneApplicationPage

  {  

    List<Grid> UIList = new List<Grid>();
    Grid objGrid1 = null;
    Button objButton1 = null;
    Button objButton2 = null;

    // Constructor
    public MainPage()
    {
        InitializeComponent();
        createGrid1("grid1");
        createButton2("Button2");
    }


    public void createGrid1(string x)
    {
        objGrid1 = new Grid();
        objGrid1.Height = 100;
        objGrid1.Name = x;
        objGrid1.Width = 200;
        objGrid1.Margin = new Thickness(100, 100, 0, 0);
        objGrid1.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        objGrid1.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        objGrid1.Background = new SolidColorBrush(Colors.Orange);            
        createButton1("changename");

    }
    public void createButton1(string _name)
    {
        objButton1 = new Button();
        objButton1.Height = 90;
        objButton1.Name = _name;
        objButton1.Content="Button1";
        objButton1.FontSize = 20;
        objButton1.Width = 190;            
        objButton1.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        objButton1.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        objButton1.Background = new SolidColorBrush(Colors.Blue);
        objButton1.Foreground = new SolidColorBrush(Colors.White);
        objGrid1.Children.Add(objButton1);
        LayoutRoot.Children.Add(objGrid1);
        UIList.Add(objGrid1);

    }
    public void createButton2(string _name)
    {
        objButton2 = new Button();
        objButton2.Margin = new Thickness(240, 300, 0, 0);
        objButton2.Name = _name;
        objButton2.Height = 90;
        objButton2.Content = "Button2";
        objButton2.FontSize = 20;
        objButton2.Width = 190;
        objButton2.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
        objButton2.VerticalAlignment = System.Windows.VerticalAlignment.Top;
        objButton2.Background = new SolidColorBrush(Colors.Blue);
        objButton2.Foreground = new SolidColorBrush(Colors.White);
        LayoutRoot.Children.Add(objButton2);
        objButton2.Click += (s, e) =>
            {
                int c = UIList.ElementAt(0).Children.Count;
                if (c == 1)
                {
                    //logic to change content of Button1 on click of Button2
                }
            };

    }

}
4

1 に答える 1

2

クラス フィールドなど、作成されたコントロールへの参照を保持できないと仮定すると、グリッドのChildrenプロパティを反復処理して、目的のボタンを見つけることができます。複数のボタンがある場合は、Tagプロパティを使用してそれらを区別できます。

ボタンが見つかったら、上記のコンテンツで説明したように、Contentプロパティを使用してボタンのコンテンツを変更します。

于 2013-01-02T07:53:42.023 に答える