/ / Les propriétés explicites de UserControl sont ignorées dans Generic.xaml - wpf

Les propriétés explicites de UserControl sont ignorées dans Generic.xaml - wpf

J'ai UserControl simple avec la largeur et la hauteur par défaut spécifiées à l'intérieur dans UserControl1.xaml:

<UserControl x:Class="WpfApplication7.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Width="100" Height="100"
d:DesignHeight="300" d:DesignWidth="300">

<Border Background="Blue"/>
</UserControl>

Ensuite, j'ai placé ce contrôle UserControl dans le contrôle personnalisé CustomControl1 et substitué les valeurs de largeur et de hauteur dans Generic.xaml:

<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<local:UserControl1 Width="5" Height="5" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

Pour une raison quelconque, lorsque j'instancie mon CustomControl1, je constate que les valeurs spécifiées de largeur et de hauteur sont ignorées.

Capture d'écran

Maintenant, j'ai trouvé une solution de contournement pour ce problème.

Mais je veux comprendre pourquoi cela se passe?

Réponses:

1 pour la réponse № 1

Supprimez la largeur et la hauteur fixes de votre contrôle personnalisé.

   <UserControl x:Class="WpfApplication7.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">

<Border Background="Blue"/>
</UserControl>

Devrait fonctionner lors du réglage de la largeur et de la hauteur dans votre vue principale.


1 pour la réponse № 2

Cela se produit parce que vous avez codé en durhauteur / largeur de 100 x 100 sur UserControl - et ces valeurs ont une priorité plus élevée que lorsque vous tentiez de définir hauteur / largeur sur 5 x 5 dans l’instance CustomControl de UserControl.

Même si vous définissez une hauteur / largeur pour lecontrôle personnalisé (par exemple, 5 x 5) - il ne modifierait pas réellement la taille du contrôle utilisateur, il en montrerait simplement une section de 5 x 5. Ceci est bien illustré par une image plutôt que par un rectangle.