2010-06-01 2 views
2

D'un UserControl, je voudrais désactiver un ScrollViewer qui est défini un niveau plus haut. Mon scénario ressemble à ceci:Est-il possible de désactiver un ScrollViewer à l'intérieur du ScrollViewer?

<!-- ... --> 
<ScrollViewer VerticalScrollBarVisibility="Auto" 
       HorizontalScrollBarVisibility="Disabled"> 
    <custom:MyUserControl ... /> 
</ScrollViewer> 

Maintenant, je voudrais désactiver le ScrollViewer à l'intérieur MyUserControl. Est-ce possible?

Contexte:
J'ai défini un style personnalisé TabControl où j'ai ajouté un ScrollViewer pour le contenu de chaque élément automatiquement. Cependant, dans un cas, je ne veux pas utiliser ce ScrollViewer, mais plutôt faire la taille du contenu à l'espace disponible, alors que dans tous les autres cas, je veux utiliser le ScrollViewer. Des idées? Bien sûr, je pourrais ajouter un ScrollViewer à chaque élément de l'onglet manuellement, sauf pour un élément, mais ce n'est pas ce que je veux.

Répondre

0

Dans le code, vous devriez être en mesure de le faire comme ceci:

try 
{ 
    ((ScrollViewer)Parent).IsEnabled = false; 
} 
catch (Exception exc) 
{ 
    MessageBox.Show(exc.Message); 
} 

Je l'ai aussi fait avant d'utiliser les déclencheurs en XAML si vous avez besoin de le faire de cette façon laissez-moi savoir et je peux poster le code

+0

Merci pour la réponse. Malheureusement, le code-behind n'est pas une option dans mon cas. Comment feriez-vous cela en XAML? Ce serait génial si vous pouviez poster le code. – gehho

+0

En relisant votre question, je pense que ce que j'ai déjà fait ne résout pas votre question. Le simple fait de désactiver le ScrollViewer ne changera pas la disposition des éléments à l'intérieur, il ne défilera pas, donc il ne fera pas la taille du contenu à l'espace disponible. Il semble que vous puissiez définir un autre style TabControl sans le ScrollViewer, plutôt que d'avoir un ScrollViewer désactivé. – Oliver