WPF - Puis-je empêcher UserControl d'exposer ses éléments enfants nommés?
-
19-08-2019 - |
Question
Ceci est un peu une question de noob mais je viens de me rendre compte que si je crée un UserControl et choisis de nommer certains de ses éléments enfants à la -
<UserControl x:Class="UserControls.uControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid x:Name="maingrid">
</Grid>
alors je peux référencer les éléments nommés dans le code-behind du XAML consommateur. Donc, pour l'exemple ci-dessus, je pourrais écrire
uControl.mainGrid = new Grid();
Je suis curieux de savoir pourquoi cela est le cas et, plus important encore, comment je peux encapsuler ces contrôles en toute sécurité.
Comme d'habitude, toute aide serait vraiment appréciée.
La solution
Ce que vous voulez, c'est le x: FieldModifier
attribut:
<UserControl x:Class="UserControls.uControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="300" Height="300">
<Grid x:Name="maingrid" x:FieldModifier="private">
</Grid>
</UserControl>
La valeur par défaut est interne , pour une raison quelconque. Vous pouvez en savoir plus à ce sujet ici .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow