none
Porque o Binging usando DependencyProperty não funciona? (Não uso o Code Behind) RRS feed

  • Pergunta

  • Sou novo em WPF e tenho estas classes em um aplicativo de exemplo que estou desenvolvendo, mas não consigo fazer o binding num objeto treeview funcionar. Estou usando a propriedade isEnabled do TreeviewItem via xaml.

    A classe MenuViewModel, onde tenho a dependencyproperty

    public class MenuViewModel : DependencyObject {

    #region dependencyProperty public static readonly DependencyProperty TreeAllCustomersProperty =

    DependencyProperty.Register("TreeAllCustomers", typeof(Boolean), typeof(MenuViewModel), null); public static readonly DependencyProperty TreeAllEmployeesProperty =

    DependencyProperty.Register("TreeAllEmpliers", typeof(Boolean),typeof(MenuViewModel));

    #endregion

    #region propriedades

    public Boolean TreeAllCustomers
            {
                get { return (Boolean)base.GetValue(MenuViewModel.TreeAllCustomersProperty); }
                set { base.SetValue(MenuViewModel.TreeAllCustomersProperty, value); }
            }

            public Boolean TreeAllEmployees
            {
                get { return (Boolean)base.GetValue(MenuViewModel.TreeAllEmployeesProperty); }
                set { base.SetValue(MenuViewModel.TreeAllEmployeesProperty, value); }
            }

            #endregion

    }

    Meu Xaml esta assim:

    <TreeView Width="auto">
           <TreeViewItem Header="Gestão de Documentos" IsExpanded="True">
                         <TreeViewItem Name="TreeAllCustomers" Header="Todos os Clientes" 
    
    				IsEnabled="{Binding TreeAllCustomers}" 
    
    				ItemsSource="{Binding CommandAllCustomers}" 
    
    				ItemTemplate="{StaticResource CommandsTemplate}"/>
    
    		     <TreeViewItem Name="TreeAllEmployees" Header="Todos os Empregados" 
    
    				IsEnabled="{Binding Path=TreeAllEmployees}"
    
    				 ItemsSource="{Binding CommandAllEmployees}" 
    
    				ItemTemplate="{StaticResource CommandsTemplate}" />
    
           </TreeViewItem> 
    </TreeView>

    Simplesmente ao executar o aplicativo, o treeviewItem não é atualizado de acordo com o binding das propriedades. Parece que falta algo que ainda não percebi. O que será que estou perdendo? 

    Agradeço a atenção.


    quarta-feira, 28 de agosto de 2013 17:24

Respostas

  • Olá Fabio,

    Ao que parece está faltando o Item-source:

    treeView.ItemsSource = ..yourFolderList..

    Att,

    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 28 de agosto de 2013 18:45
  • Olá,

    Andei dando uma pesquisada e encontrei dois links que podem te auxiliar: 

    Esse:

    http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode

    E esse:

    http://msdn.microsoft.com/en-us/library/dd759035(v=vs.95).aspx

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 29 de agosto de 2013 14:00

Todas as Respostas

  • Olá Fabio,

    Ao que parece está faltando o Item-source:

    treeView.ItemsSource = ..yourFolderList..

    Att,

    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 28 de agosto de 2013 18:45
  • Obrigado pela ajuda Giovani,

    Bom, o TreeviewItem tem um binding no ItemsSource para uma lista de comandos CommandAllCustomers. 

     <TreeViewItem Name="TreeAllCustomers" Header="Todos os Clientes" 
    
    				IsEnabled="{Binding TreeAllCustomers}" 
    
    				ItemsSource="{Binding CommandAllCustomers}" 
    
    				ItemTemplate="{StaticResource CommandsTemplate}"/>

    O treeview também precisaria? Como o binding abaixo:

    <TreeView ItemsSource="{Binding}" Width="auto">
                            <TreeViewItem Header="Gestão de Documentos" IsExpanded="True">
                                <TreeViewItem Name="CliTree" Header="Clientes"  >
                                    <TreeViewItem Name="TreeAllCustomers" Header="Todos os Clientes" IsEnabled="{Binding TreeAllCustomers, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding CommandAllCustomers}" ItemTemplate="{StaticResource CommandsTemplate}"/>
                                    <TreeViewItem Name="TreeCustomers" Header="Novo Cliente" IsEnabled="{Binding TreeCustomer, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding CommandCustomer}"   ItemTemplate="{StaticResource CommandsTemplate}" />
                            </TreeViewItem>




    quarta-feira, 28 de agosto de 2013 23:22
  • Olá,

    Andei dando uma pesquisada e encontrei dois links que podem te auxiliar: 

    Esse:

    http://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewMode

    E esse:

    http://msdn.microsoft.com/en-us/library/dd759035(v=vs.95).aspx

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 29 de agosto de 2013 14:00
  • Obrigado, vou dar uma estudada nestes links que me passou
    quinta-feira, 29 de agosto de 2013 14:20