none
Event handling usando resource dictionary - window.xaml RRS feed

  • Pergunta

  • Boa tarde pessoal!

    Estou começando a aprender wpf e estou com uma dúvida.

    Gostaria de saber se é possível utilizar o evento do clique do botao usando o resource dictionary para adionar algum evento em um window.xaml.

    Ja tentei o seguinte codigo porém nao tive exito:

     <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        x:Class="NameSpace.MainWindow"
                        x:ClassModifier="public">

    Abraço a todos!

     

     

     

     


    Leandro Neroni
    segunda-feira, 13 de setembro de 2010 21:05

Respostas

  • Olá Leandro,
    Fiz um exemplo, não sei se é exatamente o que você precisa, mas talvez ajude

    o xaml da MainWindow

    <Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
      
      <Grid>    
        <StackPanel x:Name="panel" Orientation="Vertical">      
        </StackPanel>
      </Grid>
    </Window>
    

    O ResourceDictionary

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
      <Button x:Key="btn" Content="btn in resource dictionary"/>
      
    </ResourceDictionary>
    

    o codebehind da MainWindow

     public partial class MainWindow : Window
      {
        public MainWindow()
        {
          InitializeComponent();
    
          ResourceDictionary dict = new ResourceDictionary();
          dict.Source = new Uri("Dictionary1.xaml", UriKind.Relative);
          Application.Current.Resources.MergedDictionaries.Clear();
          Application.Current.Resources.MergedDictionaries.Add(dict);
    
          Button btn = (Button)Application.Current.Resources["btn"];
    
          btn.Click += new RoutedEventHandler(btn_Click);
    
          Application.Current.Resources["btn"] = btn;
          this.panel.Children.Add(btn);
    
        }
    
        void btn_Click(object sender, RoutedEventArgs e)
        {
          MessageBox.Show("button click");
        }
      }
    
    Att.
    Anderson
    quinta-feira, 16 de setembro de 2010 00:55
  • Olá Leandro,
    Fiz um exemplo, não sei se é exatamente o que você precisa, mas talvez ajude

    o xaml da MainWindow

    <Window x:Class="WpfApplication4.MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="MainWindow" Height="350" Width="525">
     
     <Grid>  
      <StackPanel x:Name="panel" Orientation="Vertical">   
      </StackPanel>
     </Grid>
    </Window>
    

    O ResourceDictionary

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     <Button x:Key="btn" Content="btn in resource dictionary"/>
     
    </ResourceDictionary>
    

    o codebehind da MainWindow

     public partial class MainWindow : Window
     {
      public MainWindow()
      {
       InitializeComponent();
    
       ResourceDictionary dict = new ResourceDictionary();
       dict.Source = new Uri("Dictionary1.xaml", UriKind.Relative);
       Application.Current.Resources.MergedDictionaries.Clear();
       Application.Current.Resources.MergedDictionaries.Add(dict);
    
       Button btn = (Button)Application.Current.Resources["btn"];
    
       btn.Click += new RoutedEventHandler(btn_Click);
    
       Application.Current.Resources["btn"] = btn;
       this.panel.Children.Add(btn);
    
      }
    
      void btn_Click(object sender, RoutedEventArgs e)
      {
       MessageBox.Show("button click");
      }
     }
    
    Att.
    Anderson

    isso ou use o MVVM e coloque um command no button.

    Att,


    Adriel Codeco Silva
    Microsoft MCTS
    sexta-feira, 4 de março de 2011 04:06
    Moderador

Todas as Respostas

  • Olá Leandro,
    Não entendi muito bem sua dúvida, você pode passar maiores detalhes?

    Att.
    Anderson
    segunda-feira, 13 de setembro de 2010 23:48
  • Olá Anderson!!

    Estou usando o resource dictionary para fazer o menu da minha aplicaçao.

    E preciso de um botão para chamar uma função no .cs do xaml.

    O resource dictionary tem algumas restriçoes.

    Vi em alguns foruns q precisa colocar o x:Class.

    Coloquei so que nao deu certo.

    Se vc souber de alguma outra maneira, ou me ajudar a identificar o que esta errado agradeço.

    Abraços.

     

     

     

     

     

     

     

     


    Leandro Neroni
    terça-feira, 14 de setembro de 2010 14:13
  • Olá Leandro,
    O método que você precisa chamar no click do botão e o  está no App.xml, é isso?

    Você pode postar alguns fragmentos do código? Tipo mostrando, em qual arquivo está o menu e onde estão o método e o botão?

    Att.
    Anderson
    terça-feira, 14 de setembro de 2010 19:02
  • Ola Anderson!

    O metodo ficará no mainwindown.xaml

    <Button Grid.Row="0" Grid.Column="0" Click="BuscarRoteiro" >
    

    E o botão ficará no resource dictonary.

    Abracss

     


    Leandro Neroni
    quarta-feira, 15 de setembro de 2010 17:44
  • Olá Leandro,
    Fiz um exemplo, não sei se é exatamente o que você precisa, mas talvez ajude

    o xaml da MainWindow

    <Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
      
      <Grid>    
        <StackPanel x:Name="panel" Orientation="Vertical">      
        </StackPanel>
      </Grid>
    </Window>
    

    O ResourceDictionary

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
      <Button x:Key="btn" Content="btn in resource dictionary"/>
      
    </ResourceDictionary>
    

    o codebehind da MainWindow

     public partial class MainWindow : Window
      {
        public MainWindow()
        {
          InitializeComponent();
    
          ResourceDictionary dict = new ResourceDictionary();
          dict.Source = new Uri("Dictionary1.xaml", UriKind.Relative);
          Application.Current.Resources.MergedDictionaries.Clear();
          Application.Current.Resources.MergedDictionaries.Add(dict);
    
          Button btn = (Button)Application.Current.Resources["btn"];
    
          btn.Click += new RoutedEventHandler(btn_Click);
    
          Application.Current.Resources["btn"] = btn;
          this.panel.Children.Add(btn);
    
        }
    
        void btn_Click(object sender, RoutedEventArgs e)
        {
          MessageBox.Show("button click");
        }
      }
    
    Att.
    Anderson
    quinta-feira, 16 de setembro de 2010 00:55
  • Olá Leandro,
    Fiz um exemplo, não sei se é exatamente o que você precisa, mas talvez ajude

    o xaml da MainWindow

    <Window x:Class="WpfApplication4.MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="MainWindow" Height="350" Width="525">
     
     <Grid>  
      <StackPanel x:Name="panel" Orientation="Vertical">   
      </StackPanel>
     </Grid>
    </Window>
    

    O ResourceDictionary

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
     <Button x:Key="btn" Content="btn in resource dictionary"/>
     
    </ResourceDictionary>
    

    o codebehind da MainWindow

     public partial class MainWindow : Window
     {
      public MainWindow()
      {
       InitializeComponent();
    
       ResourceDictionary dict = new ResourceDictionary();
       dict.Source = new Uri("Dictionary1.xaml", UriKind.Relative);
       Application.Current.Resources.MergedDictionaries.Clear();
       Application.Current.Resources.MergedDictionaries.Add(dict);
    
       Button btn = (Button)Application.Current.Resources["btn"];
    
       btn.Click += new RoutedEventHandler(btn_Click);
    
       Application.Current.Resources["btn"] = btn;
       this.panel.Children.Add(btn);
    
      }
    
      void btn_Click(object sender, RoutedEventArgs e)
      {
       MessageBox.Show("button click");
      }
     }
    
    Att.
    Anderson

    isso ou use o MVVM e coloque um command no button.

    Att,


    Adriel Codeco Silva
    Microsoft MCTS
    sexta-feira, 4 de março de 2011 04:06
    Moderador