2012-02-21 1 views
0

J'ai donc un tabcontrol qui est lié à une liste (a un nom et un code). Et cela fonctionne parfaitementUcercontrol dans datatemplate tous les objets sont automatiquement "partagés"

<TabControl.ContentTemplate> 
    <DataTemplate> 
     <sp:ucercontroltest DataContext="{Binding}" strname="{Binding Path=name}" strcode="{Binding Path=code}" /> 
    </DataTemplate> 
</TabControl.ContentTemplate> 

Mais si j'ajouter un bouton (btntestbutton) sur usercontroltest avec un événement, que si le bouton est cliqué, je veux que le bouton est désactivé (btntestbutton.IsEnabled = false) puis est désactivé sur TOUS les usercontrols (onglets)! Comment puis-je l'empêcher de tous être partagés entre eux donc si je veux par exemple désactiver le bouton sur 1 usercontrol de sorte que je ne les désactive pas automatiquement tous.

+0

Êtes-vous sûr que cela se produit? –

+1

'DataContext =" {Binding} "' est assez redondant d'ailleurs. –

+0

@HenkHolterman yep 200%, j'ai un listview sur ucercontrol, et je veux que tous les ucercontrols dans chaque onglet aient un élément listview différent. les éléments listview sont créés avec le code String qui est passé, mais chaque chaîne est différente, mais une fois que je charge la chaîne et en fait une liste, placez la liste dans la listview, si je change d'onglet, la listview reste la même (mais sur ce robinet, je crée une liste d'éléments qui sont insérés dans la liste, puis elle change), mais elle sera toujours la même sur tous les onglets. – Maximc

Répondre

2

Pour autant que je sais TabControls réutiliser les contrôles créés à partir du ContentTemplate, d'une façon d'avoir un état unique aux onglets serait de lier la propriété IsEnabled du bouton à une propriété sur la machine virtuelle de chaque onglet, puis l'état s'ajusterait sur le commutateur de tabulation. (Bien sûr, vous devrez alors ajuster la propriété VM dans le gestionnaire, pas le IsEnabled)

+0

Ceci est correct .... WPF réutilisera les templates si possible et remplacera simplement le 'DataContext' derrière le template pour changer l'item courant – Rachel

+0

@Rachel: En effet," when possible ". Si le 'TabControl.ItemTemplate' est défini explicitement, c'est toujours le cas bien sûr. –

+0

Je n'utilise pas de VM: '(? (Est-ce vraiment mauvais: p?) – Maximc

Questions connexes