Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Windows Phone

Войти
Регистрация
Восстановить пароль
 
wshadw
0 / 0 / 0
Регистрация: 26.03.2014
Сообщений: 17
#1

Обновление системных кистей (стилей) на лету - Windows Phone

16.04.2015, 23:22. Просмотров 414. Ответов 0
Метки нет (Все метки)

WP8.1 Runtime C#
Здравствуйте, необходимо обновить цвет системных элементов на лету, т.е. такие как цвет переключателя, цвет выделения листбокса, и подобное. Я нашёл системные кисти, которыми, прописав в app.xaml, в ресурсах, я изменил цвет(при загрузке приложения), но изменение этих кистей из кода c# на лету не даёт должного эффекта. Как можно перезагрузить стили/обновить элементы?
Пс. Мне нужно нечто подобное как в стандартном почтовом клиенте, там в настройках можно сменить цвет фона, и соответственно там меняются и цвета элементов, мгновенно.
Вот как я пытался это сделать
App.xaml:
Кликните здесь для просмотра всего текста

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<Application
    x:Class="App2.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App2">
    <Application.Resources>
        <Color x:Key="MainBrush">#FF009999</Color>
        <SolidColorBrush x:Key="ProgressBarIndeterminateForegroundThemeBrush" Color="{ThemeResource MainBrush}"/>
        <SolidColorBrush x:Key="ToggleSwitchCurtainBackgroundThemeBrush" Color="{ThemeResource MainBrush}"/>
        <SolidColorBrush x:Key="SliderTrackDecreaseBackgroundThemeBrush" Color="{ThemeResource MainBrush}"/>
        <SolidColorBrush x:Key="ListBoxItemSelectedBackgroundThemeBrush" Color="{ThemeResource MainBrush}"/>
        <SolidColorBrush x:Key="TextSelectionHighlightColorThemeBrush" Color="{ThemeResource MainBrush}"/>
        <SolidColorBrush x:Key="SliderThumbBackgroundThemeBrush" Color="{ThemeResource MainBrush}"/>
        <SolidColorBrush x:Key="SliderThumbBorderThemeBrush" Color="{ThemeResource MainBrush}"/>
        <SolidColorBrush x:Key="ListBoxItemPointerOverForegroundThemeBrush" Color="White" />
        <SolidColorBrush x:Key="ListBoxItemPressedForegroundThemeBrush" Color="White" />
        <SolidColorBrush x:Key="ListBoxItemSelectedForegroundThemeBrush" Color="White" />
        <SolidColorBrush x:Key="ListBoxItemSelectedPointerOverBackgroundThemeBrush" Color="Transparent"/>
        <SolidColorBrush x:Key="ListBoxItemDisabledForegroundThemeBrush" Color="Transparent"/>
        <SolidColorBrush x:Key="ListBoxItemPointerOverBackgroundThemeBrush" Color="Transparent"/>
        <SolidColorBrush x:Key="ButtonPressedBackgroundThemeBrush" Color="Transparent"/>
        <SolidColorBrush x:Key="ListBoxItemPressedBackgroundThemeBrush" Color="Transparent"/>
    </Application.Resources>
</Application>

MainPage.xaml:
Кликните здесь для просмотра всего текста

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 <Grid>
        <StackPanel>
            <Slider Value="50"/>
            <ListBox SelectedIndex="1" Background="Transparent">
                <TextBlock Foreground="White" Text="TEXT"/>
                <TextBlock Foreground="White" Text="TEXT"/>
                <TextBlock Foreground="White" Text="TEXT"/>
            </ListBox>
            <ToggleSwitch IsOn="True"/>
            <ProgressBar Height="10" Margin="0,20" IsIndeterminate="True"/>
            <Rectangle Height="30">
                <Rectangle.Fill>
                    <SolidColorBrush x:Name="RectBrush" Color="{ThemeResource MainBrush}"></SolidColorBrush>
                </Rectangle.Fill>
            </Rectangle>
 
            <Button Click="ButtonBase_OnClick" HorizontalAlignment="Center" Margin="0,60,0,0" Content="ИЗМЕНИТЬ ЦВЕТ ВСЕГО ЭТОГО"/>
        </StackPanel>
    </Grid>

MainPage.cs:
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
        {
            var c = Color.FromArgb(255, 200, 0, 200);
 
            RectBrush.Color = c; //прямой способ, естественно работает
 
            Application.Current.Resources["MainBrush"] = c;
            Application.Current.Resources["ProgressBarIndeterminateForegroundThemeBrush"] = c;
            Application.Current.Resources["ToggleSwitchCurtainBackgroundThemeBrush"] = c;
            Application.Current.Resources["SliderTrackDecreaseBackgroundThemeBrush"] = c;
            Application.Current.Resources["ListBoxItemSelectedBackgroundThemeBrush"] = c;
            Application.Current.Resources["TextSelectionHighlightColorThemeBrush"] = c;
            Application.Current.Resources["SliderThumbBackgroundThemeBrush"] = c;
            Application.Current.Resources["SliderThumbBorderThemeBrush"] = c;
        }

Вот файл этого тестового проектаApp2.7z

Заранее спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2015, 23:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обновление системных кистей (стилей) на лету (Windows Phone):

Обновление файлов сервера на лету и потоки. - C# ASP.NET
Сервак крутится на IIS6. Среди всего прочего там есть HttpModule, который при инициализации создает отдельный поток. Работает поток так: ...

Смена стилей "на лету" (ResourceDictionary) - C# WPF
Форумчане не подскажете как править app.xaml в коде? Мне нужно удалить Dictionary1.xaml и записать Dictionary2.xaml это возможно? ...

Смена стилей "на лету" - Joomla
Уважаемые форумчане! Как можно реализовать переключение стилей на сайте (сайт на joomla). Понравился пример вот на этом сайте:...

обновление стилей в браузере - HTML, CSS
в общем дело так: изменяю я стили на сайте, но, перезагружая страничку, стили не обновляются скопировал все стили в другой файл(с другим...

Как в документе отменить автоматическое обновление ВСЕХ стилей? - MS Word
У меня проблема - работаю с документами, над которыми трудилось до этого очень много людей и в котором много левых стилей. И когда я...

обновление данных "на лету" при вводе - jQuery
Есть форма, в ней есть три поля: &lt;input name='price' value=&quot;&lt;?php echo($this-&gt;was_price); ?&gt;&quot;&gt; &lt;input name='markup' value=&quot;&lt;?php...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2015, 23:22
Привет! Вот еще темы с ответами:

Чем отличается импорт стилей от подключения связанных стилей css? - HTML, CSS
чем отличается импорт стилей от подключения связанных стилей css? &lt;link rel=&quot;stylesheet&quot; href=&quot;mystyle.css&quot;&gt; от @import...

Информация из контекста(количество кистей). Ошибка - C++ WinAPI
Добрый день. Может кто подскажет Нужно сделать такое задание: вывести на экран информацию, получаемую из контекста, об устройстве, а...

Как запретить вывод системных сообщений и вместо системных сообщений открыть Form1? - MS Access
как запретить ВЫВОД СИСТЕМНЫХ СООБЩЕНИЙ И ВМЕСТО СИСТЕМНЫХ СООБЩЕНИЙ ОТКРЫТЬ ФОРМУ &quot;FORM1&quot;

По поводу стилей и сброса стилей - HTML, CSS
Приветствую друзья. Собственно коротко и по сути. Есть CSS файл. В нем прописан сброс стилей от Эрика. Далее идут уже мои стили. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru