/ / Jawne właściwości UserControl są ignorowane wewnątrz pliku Generic.xaml - wpf

Jawne właściwości UserControl są ignorowane wewnątrz pliku Generic.xaml - wpf

Mam prosty UserControl z domyślną szerokością i wysokością określoną w 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>

Następnie umieszczam tę UserControl wewnątrz niestandardowej kontroli CustomControl1 i zastępuję wartości Width i Height w 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>

Z jakiegoś powodu, gdy tworzę instancję CustomControl1, widzę, że określone wartości szerokości i wysokości są ignorowane.

Zrzut ekranu

Teraz znalazłem obejście tego problemu.

Ale chcę zrozumieć, dlaczego tak się dzieje?

Odpowiedzi:

1 dla odpowiedzi № 1

Usuń stałą szerokość i wysokość ze swojego niestandardowego sterowania.

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

Powinien działać podczas ustawiania szerokości i wysokości w widoku głównym.


1 dla odpowiedzi nr 2

Dzieje się tak, ponieważ jesteś zakodowanywysokość / szerokość 100 x 100 na UserControl - i te wartości mają wyższy priorytet niż przy próbie ustawienia wysokości / szerokości na 5 x 5 w instancji CustomControl "UserControl.

Nawet jeśli zdefiniujesz wysokość / szerokość dlaniestandardowa kontrola (na przykład 5 x 5) - nie zmieniłaby faktycznie rozmiaru kontrolki użytkownika, pokazałaby tylko sekcję 5 x 5. Najlepiej ilustruje to obraz, a nie prostokąt.