0

Foreach で多くのボタンを作成したいのですが、これらのボタンは Uri のプロパティを出力します。しかし、私はそれを行う方法がわかりません。方法を教えてください。これは私のコードです:

private void CreateButtons()
{
    Uri uri = new Uri("/Pages/PageTest.xaml?Name=Stephen&Age=17",UriKind.Relative);

    foreach(var pi in typeof(Uri).GetProperties())
    {
        //create button
        Button btn = new Button();

        btn.Content = pi.Name;

        btn.Margin = new Thickness(0,0,0,12);

        //i think this is bug, but i don't know,how to do
        btn.Click += (se,ev)=>
        {
           MessageBox.Show(pi.GetValue(btn,null).ToString());
        }

        stackPanel.Children.Add(btn);            
    }
}
4

2 に答える 2

0

間違ったターゲットを使用しています

pi.GetValue(btn,null)

URI プロパティをクエリしていますが、ターゲットはボタン オブジェクトです。

次のようなものが必要です:

MessageBox.Show(pi.GetValue(uri, null).ToString());
于 2012-04-09T14:02:36.167 に答える
0

イベントハンドラーで例外が発生していると思います。

例外がスローされたときの中断を有効にしてみてください ([デバッグ|例外] -> [共通言語ランタイム例外] の横にある [スロー] をオンにします)。

次に、デバッガーを接続して実行し、ボタンをクリックすると何が起こるかを確認します。NullPointerException が疑われます

于 2012-04-09T14:04:58.930 に答える