Стилове на копчета с деца

Имам въпрос относно стиловете. В моето 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>

person WereWolfBoy    schedule 19.08.2014    source източник


Отговори (1)


Ако изобщо искате да игнорирате потребителските настройки, най-добрият вариант ще бъде просто да замените стойността на PhoneAccentBrush. Можете да го направите в App.xaml или да използвате ResourceDistionary.

  <Color x:Key="PhoneAccentColor">Blue</Color>

Също така е възможно да поискате светла или тъмна тема за вашето приложение в App.xaml:

  <Application x:Class="App1.App"
               xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
               xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
               xmlns:local="using:App2"
               RequestedTheme="Light">
  </Application>
person Валера Галанин    schedule 21.08.2014
comment
Ей благодаря Ще пробвам това. Но това вероятно работи само за телефонната част на проекта. Има ли нещо подобно за съвременни приложения на Windows? - person WereWolfBoy; 22.08.2014
comment
Ти си прав. Това ще работи само за телефон. В приложенията на магазина можете да замените ресурса ButtonPressedBackgroundThemeBrush. Но това е различно за други контроли. Пълният списък с ThemeResouces е наличен тук: msdn.microsoft.com/en-us /library/dn518235.aspx - person Валера Галанин; 22.08.2014