/ / Explizite Eigenschaften von UserControl werden in Generic.xaml -wpf ignoriert

Explizite Eigenschaften von UserControl werden in Generic.xaml - wpf ignoriert

Ich habe ein einfaches UserControl mit der Standardbreite und -höhe, die in UserControl1.xaml angegeben ist:

<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>

Dann füge ich dieses UserControl in CustomControl1 ein und überschreibe Width- und Height-Werte in 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>

Wenn ich CustomControl1 instanziiere, sehe ich aus irgendeinem Grund, dass angegebene Werte für Width und Height ignoriert werden.

Bildschirmfoto

Jetzt habe ich eine Problemumgehung für dieses Problem gefunden.

Aber ich möchte verstehen, warum dies geschieht.

Antworten:

1 für die Antwort № 1

Entfernen Sie feste Breite und Höhe von Ihrem benutzerdefinierten Steuerelement.

   <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>

Sollte funktionieren, wenn Sie Breite und Höhe in Ihrer Hauptansicht einstellen.


1 für die Antwort № 2

Dies geschieht, weil Sie hart codiert sindHöhe / Breite von 100 x 100 auf dem UserControl - und diese Werte haben eine höhere Priorität als bei dem Versuch, Höhe / Breite auf 5 x 5 in der CustomControl-Instanz des UserControl festzulegen.

Auch wenn Sie eine Höhe / Breite für die festlegenBenutzerdefiniertes Steuerelement (z. B. 5 x 5) - es würde nicht tatsächlich die Größe des Benutzersteuerelements ändern, es würde nur einen 5 x 5-Ausschnitt davon zeigen. Dies wird am besten mit einem Bild anstelle eines Rechtecks ​​veranschaulicht.