Bindowanie właściwości klasy wg wzorca singleton

DataBinding jest wspaniałą cechą Windows Presentation Foundation, która doskonale ułatwia pracę programisty. Lubię często używać klas opartych na wzorcu singleton jako dostępu do "configu" aplikacji. Nie potrzebujemy wielu instancji tego obiektu(różnie z tym bywa, ale o tym może kiedy indziej), więc definiowanie go za każdym staje się zbędne, łatwiej jest pobrać jedną instancję. Problemem naszym jednak jest zbindowanie jakiejś właściwości takowej klasy do np. pola text kontrolki TextBox.

Bindowanie właściwości klasy singleton

Przykładowa klasa:

class Singleton
{
        private static Singleton instance = null;
        private string _url = "http://mephir.net.pl";

        public static Singleton Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
        }

        private Singleton()
        {
            //nasz konstruktor
        }

        public string Url
        {
            get
            {
                return _url;
            }
            set
            {
                //zapisujemy sobie gdzies ta wlasciwosc, preferuje rejestr, ale to akurat nie ma znaczenia
                _url = value;
            }
        }
}

A teraz plik xaml:
<TextBox Name="urlBox" Text="{Binding Source={x:Static local:Singleton.Instance}, Path=Url}"/>

Jeżeli nie chcemy by zmiana zawartości TextBox'a wpływała na zmianę własciwości, wystarczy do bindowania podać argument Mode=OneWay.
<TextBox Name="urlBox" Text="{Binding Source={x:Static local:Singleton.Instance}, Path=Url, Mode=OneWay}"/>

Your rating: Brak Ocena: 5 (2 votes)

Dodaj nową odpowiedź

Zawartość pola nie będzie udostępniana publicznie.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Dozwolone znaczniki HTML: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Znaki końca linii i akapitu dodawane są automatycznie.
  • You can use the <go> tags just like the <a> for nicer urls.

Więcej informacji na temat formatowania