コードビハインドでコントロールを作成するためのクラスを作ろうとしているのですが、そのクラス内でイベントハンドラにメソッドを追加する方法が分かりません。
同じフィールドでは登録できました。
C#
1 public partial class MainWindow : Window 2 { 3 public MainWindow() 4 { 5 InitializeComponent(); 6 Button btn = new Button(); 7 btn.Click += new RoutedEventHandler(Button_Click); //この方法は上手くいきました 8 } 9 10 private void Button_Click(object sender, RoutedEventArgs e) 11 { 12 13 } 14 15 public class botan 16 { 17 public Button btn = new Button(); 18 public botan() 19 { 20 this.btn.Click += new RoutedEventHandler(Button_Click); //メソッドが参照できずに登録できません 21 } 22 } 23 }
別のクラスにメソッドを作りインスタンスから呼び出す方法も考えました。
C#
1 public partial class MainWindow : Window 2 { 3 public MainWindow() 4 { 5 InitializeComponent(); 6 } 7 8 public class botan 9 { 10 Button btn = new Button(); 11 public botan() 12 { 13 methods m = new methods(); 14 this.btn.Click += new RoutedEventHandler(m.Button_Click); 15 } 16 } 17 } 18 19 public class methods 20 { 21 public void Button_Click(object sender, RoutedEventArgs e) 22 { 23 24 } 25 }
この場合botanを作成する時に別のクラスのインスタンスも作成することになりますが、メモリ負荷が増えたりするのでしょうか?
膨大な量のインスタンスを作成する場合もあると思うので知っておきたいです。
よろしくお願いします。
WPFですとDataTemplateを使用するのが普通だと思いますが、`コードビハインドでコントロールを作成するためのクラスを作ろうとしている` 理由の追記は可能ですか?
DataTemplateを使った動的作成方法を今まで知らなかったので・・・。少しだけ調べてDataTriggerなどの存在も知りました。今までReactive Extensionsでバインドした値を変更させていました。DataTemplateを使ったほうが管理がしやすかったり、軽くなったりするのでしょうか?
軽くなるかはわかりませんが、DataTemplate自体がコントロールを生成するWPFの仕組みですので、コントロール生成の別な仕組みを再発明する必要はないかと思います。
知っておくと出来ることが増えると思うのでDataTemplateの使い方も勉強しようと思います。教えていただきありがとうございます。
回答1件
あなたの回答
tips
プレビュー