Имам въпрос относно стиловете. В моето Windows Universal приложение имам определени бутони. Тези бутони имат stackpanel като дете, а stackpanel има изображение като дете. Целта на това е бутонът да съдържа изображение.
Сега моят работодател иска да игнорира настройките на темата на потребителя. Така че всеки път, когато се щракне върху бутон, той не иска цвета на фона на бутона да се променя. Единственият начин, който съм намерил досега, е със стил. Въпреки това, когато използвам стил, бутонът се показва без неговите деца. Стилът, който направих, изглежда така:
<Style x:Key="Button_style" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Pressed">
</VisualState>
<VisualState x:Name="Disabled"/>
<VisualState x:Name="PointerOver">
</VisualState>
<VisualState x:Name="Pointerleave">
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused"/>
<VisualState x:Name="PointerFocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Това беше доказателство за концепцията. Но тъй като децата на бутоните изчезнаха, не мога да продължа. Как бих пренаписал този стил, за да накарам децата на бутона да останат там, където трябва да бъдат?
Ето примерен код на бутона, който имам:
<Button Name="MyButton" Click="MyButton_Click" ClickMode="Press" HorizontalAlignment="Center" VerticalAlignment="Stretch" >
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Left" >
<Image Name="MyImage" x:Uid="MyImage" Source="" VerticalAlignment="Top" HorizontalAlignment="Left" MaxWidth="30" />
</StackPanel>
</Button>