NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Martin Hroch
Člen
Avatar
Martin Hroch:30.9.2017 18:35

Zdravím,

Snažím se vytvořit aplikaci, ve které půjde za běhu měnit barva několika prvků. Představuj si, že tato barva se bude načítat ze souboru a taky do souboru ukládat.

A z toho důvodu jsem si v App.xaml přidal tyto řádky.
Přidal řádek na import namespace

xmlns:myapp="clr-namespace:MyApp"

A uložil si barvu

<Application.Resources>
    <ResourceDictionary>
        <SolidColorBrush x:Key="BackgrounColor" Color="{Binding Source={x:Static myapp:Settings.BackgoundColor}}" />
    </ResourceDictionary>
</Application.Resources>

A soubor Settings vypadá takto.

using System.Windows.Media;

namespace MyApp
{
        public static class Settings
        {
                public static Color BackgoundColor { get; set; } = (Color)ColorConverter.ConvertFromString("#FFDC4848");
        }
}

Toto zatím funguje. Všem prvkům se přiřadí barva. Problém nastává, když chci barvu změnit v kódu.
Barva zůstane stále stejná.

Tady jak to udělat, abych měl na jednom místě definovanou barvu a všude jinde jí jen používal a mohl jí kdykoliv v kódu změnit?

Předem děkuji za návrhy.

 
Odpovědět
30.9.2017 18:35
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Martin Hroch
Petr Šťastný:2.10.2017 14:20

Zkus vynutit překreslení kontrolek. Tuším, že je na to metoda Invalidate. Tu metodu zkus volat těsně po změně barvy.

 
Nahoru Odpovědět
2.10.2017 14:20
Avatar
gcx11
Tvůrce
Avatar
Odpovídá na Martin Hroch
gcx11:3.10.2017 21:16

Ideálně bys to měl definované jako DependencyProperty nebo by třída měla implementovat rozhraní INotifyProper­tyChanged.

 
Nahoru Odpovědět
3.10.2017 21:16
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.