25

通常、WPFコントロールは、コードビハインド(.xaml.csファイル)ではなく、.xamlファイルで宣言されます。ただし、これらのコントロールを操作するために、コードビハインドでこれらのコントロールの一部を使用する必要がある場合があります。xamlファイルに「存在する」場合、このようなコントロールのハンドルを取得するにはどうすればよいですか?

4

2 に答える 2

34

ControlTemplateクラスのFindName()メソッドを使用できます。

// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);
于 2009-05-04T13:55:20.720 に答える
4

あなたが何を尋ねているのかよくわからないので、あなたの質問として解釈している両方の例に答えようとします.

1) 明示的なコントロールを宣言して直接編集する場合は、次のように name プロパティを設定するだけです。

<Canvas x:Name="myCanvas"/>

その後、次のように名前を介してキャンバスにアクセスできます。

myCanvas.Background = Brushes.Blue;

2) ジェネリック コントロールを宣言し、それを複数回使用する場合は、次のようにします。

<Window>
   <Window.Resources>
      <Ellipse x:Key="myEllipse" Height="10" Width="10">
   </Window.Resources>
</Window>

次に、コードで次の構文を使用して、定義済みのコントロールにアクセスできます。

Ellipse tempEllipse = (Ellipse)FindResource("MyEllipse");

リソースを複数のコントロールのテンプレートとして使用する場合は、x:Shared="false" を追加します。

于 2009-05-04T14:48:23.867 に答える