Usuário com melhor resposta
Duvida Command Button Code Behind

Pergunta
-
Olá Pessoal!
Estou com uma duvida na qual pensei que naum teria problemas. é o seguinte:
Estou criando um botão no code behind, para ele aparecer em tempo de execução:
Button btn = new Button();
btn.Content = "Executar";
btn.Width = 50;
btn.Height = 20;e adiciono num stackPanel:
StackPanel1.Children.add(btn);
Até ae tudo maravilha. A minha duvída agora é saber como colocar um command nesse botão!
btn.command = ???????
Alguém sabe como fazer?
sexta-feira, 3 de setembro de 2010 14:26
Respostas
-
Miclei,
Segue o código abaixo.
// data binding com o ViewModel
this.DataContext = seuViewModel;
// criação do botão
var button = new Button();
button.Content = "Executar";
button.Width = 50;
button.Height = 20;
// classe que representa o binding com o comando
var binding = new Binding();
binding.Path = new PropertyPath("MeuComando");
// define binding
button.SetBinding(Button.CommandProperty, binding);
// adiciona botão no StackPanel
seuStackPanel.Children.Add(button);
Att.
Ari C. Raimundo
MCAD, MCTS
http://araimundo.blogspot.com- Sugerido como Resposta Ari C. Raimundo sexta-feira, 10 de setembro de 2010 00:29
- Marcado como Resposta Miclei sexta-feira, 10 de setembro de 2010 13:31
terça-feira, 7 de setembro de 2010 01:37 -
Perfeito Ari! muito obrigado!
- Marcado como Resposta Miclei quarta-feira, 8 de setembro de 2010 17:27
quarta-feira, 8 de setembro de 2010 17:26
Todas as Respostas
-
Miclei,
Esse "command", seria o evento certo?
Faça assim...
public MainPage() { InitializeComponent(); Button btn = new Button(); btn.Content = "Executar"; btn.Width = 50; btn.Height = 20; //adicionando um evento btn.Click += new RoutedEventHandler(btn_Click); StackPanel1.Children.Add(btn); } private void btn_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Clique do botão"); } }
Abraço,
Ricardo Alves
www.ricardoalves.me- Sugerido como Resposta RicardoAlves sexta-feira, 3 de setembro de 2010 18:34
sexta-feira, 3 de setembro de 2010 18:34 -
Ricardo, até que funcionaria se a ação que eu queria fosse fixa. O problema é que essa ação é dinamica e depende do viewModel que ela tiver usando no tempo de execução.
Por isso a utilização do Command. No XAML eu faria assim:
<Button Name:"btn" Command="{Binding MeuComando}" Width="50" Heinght ="20" </Button>
Fazendo desse jeito, a ação "MeuComando" fica para o viewModel implementar.
Agora o que eu queria fazer era criar esse botão no code behind e não no xaml.
Button btn = new Button();
btn.Content = "Executar";
btn.Width = 50;
btn.Height = 20;
btn.Command = (como eu coloco o "{Binding Meu Commando}")????Att,
sexta-feira, 3 de setembro de 2010 19:04 -
Olá Miclei, tudo bem?
Bom imagino que você possua um Command, como o abaixo.
class MeuCommand : ICommand { public bool CanExecute(object parameter) { throw new NotImplementedException(); } public void Execute(object parameter) { throw new NotImplementedException(); } public event EventHandler CanExecuteChanged; }
Tente fazer da seguinte forma.
var botao = new Button(); botao.Command = new MeuCommand();
Qualquer dúvida é só falar.
Abraços.
sexta-feira, 3 de setembro de 2010 22:47 -
Miclei,
Segue o código abaixo.
// data binding com o ViewModel
this.DataContext = seuViewModel;
// criação do botão
var button = new Button();
button.Content = "Executar";
button.Width = 50;
button.Height = 20;
// classe que representa o binding com o comando
var binding = new Binding();
binding.Path = new PropertyPath("MeuComando");
// define binding
button.SetBinding(Button.CommandProperty, binding);
// adiciona botão no StackPanel
seuStackPanel.Children.Add(button);
Att.
Ari C. Raimundo
MCAD, MCTS
http://araimundo.blogspot.com- Sugerido como Resposta Ari C. Raimundo sexta-feira, 10 de setembro de 2010 00:29
- Marcado como Resposta Miclei sexta-feira, 10 de setembro de 2010 13:31
terça-feira, 7 de setembro de 2010 01:37 -
Perfeito Ari! muito obrigado!
- Marcado como Resposta Miclei quarta-feira, 8 de setembro de 2010 17:27
quarta-feira, 8 de setembro de 2010 17:26 -
Miclei,
Favor então marcar a resposta. :-)
Um abraço !
Ari C. Raimundo
MCAD, MCTS
http://araimundo.blogspot.comsexta-feira, 10 de setembro de 2010 00:29