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