質問があります。動的にボタンを作成してイベントをクリックすることは可能ですか? たとえば、4つの異なるクリックイベントで4つのボタンを作成したいとします。 MVVMパターンで作成する必要はありません。当初、私はそれが可能であることを知りたいのですが、これをどのように達成することができますか?C# - WPF - ボタンを作成してプログラムでクリックするイベント
答えて
はいそれは可能です:
public MainWindow()
{
InitializeComponent();
var button = new Button() {Content = "myButton"}; // Creating button
button.Click += Button_Click; //Hooking up to event
myGrid.Children.Add(button); //Adding to grid or other parent
}
private void Button_Click(object sender, RoutedEventArgs e) //Event which will be triggerd on click of ya button
{
throw new NotImplementedException();
}
Yeap。
public MainWindow()
{
InitializeComponent();
var btn1 = new Button{Content = "btn1"};
//add event handler 1
btn1.Click += ClickHandler1;
//removes event handler 1
btn1.Click -= ClickHandler1;
//add event handler 2
btn1.Click += ClickHandler2;
Panel.Children.Add(btn1);
}
private void ClickHandler1(object sender, RoutedEventArgs e)
{
//do something
}
private void ClickHandler2(object sender, RoutedEventArgs e)
{
//do something
}
private void ClickHandler3(object sender, RoutedEventArgs e)
{
//do something
}
複数のイベントハンドラを必要に応じて追加したり削除したりすることができます。
あなたは私を理解していません、私はこのボタンの2つのボタンと別々のクリックイベントを作成したいです – KinectUser
1つの可能な方法は、これは、MVVMを使用して当然である、すなわち
<ItemsControl ItemsSource="{Binding Commands}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Command="{Binding Command}" Content="{Binding DisplayName}" />
<DataTemplate>
<ItemsControl.ItemTemplate>
</ItemsControl>
、あなたのビューモデルでコレクションにItemsSource
プロパティをバインドされています。
私だけ入力したコード:ビューモデルは、クラス(CommandViewModel
とRelayCommand
)の一部が、ジョシュ・スミスの記事から取られ
public class ControlViewModel
{
public Collection<CommandViewModel> Commands { get; }
public ControlViewModel()
{
// Here have logic to determine which commands are added to the collection
var command1 = new RelayCommand(p => ActionForButton1());
var command2 = new RelayCommand(p => ActionForButton2());
Commands = new Collection<CommandViewModel>();
Commands.Add(new CommandViewModel(command1, "Button 1"));
Commands.Add(new CommandViewModel(command2, "Button 2"));
}
private void ActionForButton1()
{
// ....
}
private void ActionForButton2()
{
// ....
}
}
のようなものをCommandViewModel
のコレクションのいくつかの種類を持っているでしょうここでは、構文エラーがないことを再確認することができます。
私はそれが役に立ちそうです
ありがとう、私はそれを理解できませんよく私はそれについて何かもっと読む必要があると思う – KinectUser
- 1. ボタンIronPython + Wpfでイベントをクリック
- 2. WPF/Forms:プログラムでイベントを持つコントロールを作成する
- 3. WindowsボタンからWPFアプリケーションを開くをクリックします。イベント
- 4. QTでボタンをクリックしてボタンを作成する
- 5. クリックしてテキストを作成するボタンを作成するCoffeescript
- 6. C#WPFでプログラムでDataGridを作成する方法は?
- 7. 動的に作成されたボタンのイベントをクリックします。
- 8. Swift 3プログラムで作成されたボタンをクリックできない
- 9. checkbox_checkedchangeとボタンをクリックしてイベントのヘルプ
- 10. Androidでボタンをプログラムで作成する
- 11. ビジュアルなC++プログラムでイベントハンドルのボタンを作成する
- 12. 固定幅パネルにボタンをプログラムで作成するC#
- 13. ボタンをプログラムで作成する
- 14. ボタンをクリックしてクリックするとSharepointでドキュメントライブラリを作成する方法
- 15. silverlightボタンをクリックして矩形を作成する
- 16. ボタンの配列を作成して、すべてのoneClickイベントを作成する
- 17. グリッドasp.netの複数のボタンのイベントをクリックしてC#
- 18. ビジュアルスタジオ/ wpf/c#で「割り当てボタン」texboxを作成するには?
- 19. ボタンをクリックしてテキストファイルを作成する
- 20. ボタンを作成してプログラムでビューに追加する
- 21. ボタンをクリックしてWPFでデータをバインドする
- 22. C#プログラムで作成されたボタン - プログラムで作成されたテキストボックスを有効にします
- 23. ボタンをクリックしてアノテーションを削除ボタン(作成したアノテーション)
- 24. jqueryでボタンをクリックしてiframeを作成しますか?
- 25. クリック可能なオーバーレイを作成し、ボタンをクリックしてもクリックします
- 26. PowerPoint VBAでボタンを作成してもクリックできない
- 27. wpfでイベント送信者をクリック
- 28. イベントをマウスの右ボタンでクリックする
- 29. クリック時にボタンに関連付けられたラベルをプログラムで作成する
- 30. ASP.NETボタンを渡すSweetAlertでイベントをクリック
「動的にボタンを作成する」とは、いくつかのコレクションからボタンを作成することですか?条件が満たされるたびにボタンを作成するか?いずれにせよ、あなたが探しているものを理解したいだけです。 –
はい、それは可能性があり、タクウィンとしてやりやすく、アルマンは答えました。しかし、それは良いアイデアだとは限りません! XAMLのUIコントロールを維持するのが一番良い方法です。 – GreatJobBob
いくつかのボタンを作成したいのですが、あるシナリオの条件によっては、3つのボタンが別のシナリオで5つのボタンになるなどです。したがって、XAMLでUIを維持することが本当に最善の場合は、XAMLのすべてのボタンを作成し、条件値に応じて可視性のみを変更することができます。 – KinectUser