Dostosowywanie aplikacji przez użytkownika

0

Chcę dodać możliwość dostosowywania aplikacji przez użytkownika. Przykładowo w ustawianiach mógł by włączać i wyłączać dźwięki albo wibracje w aplikacji. Np po kliknięciu przycisków w aplikacji słychać by było kliknięcie albo wibrował by telefon. Utworzyłem klasę z ustawieniami na wzór tej http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769510(v=vs.105).aspx z użyciem toggleswitch no i ustawienia dobrze mi działają są zapamiętywane. Ale teraz nie mam pomysłu jak praktycznie użyć tych ustawień. No bo mam klasę "cUstawienia" a w niej

public bool UstawieniaDziwieku
        {
            get
            {
                return GetValueOrDefault<bool>(KluczUstDzwieku, DomyslneUstawienieDziweku);
            }
            set
            {
                if (AddOrUpdateValue(KluczUstDzwieku, value))
                {
                    Save();
                }
            }
        } 

Myślę żeby pobierać zmienną bool UstawieniaDzwieku przy inicjalizacji strony albo aplikacji i ewentualnie jeśli zwraca wartość prawda włączać ifem wibracje lub krótki dźwięk. Jednak nie wiem jak wydobyć tą wartość z klasy cUstawienia

1

Prościej - za każdym razem, jak potrzebujesz użyć wibracji czy dźwięku sprawdzaj, czy aby nie jest (albo jest) ustawiona na true.
Twoja zmienna UstawieniaDzwieku jest właściwością - taka magiczna metoda, która wywoła się wtedy, kiedy tego potrzebujesz.

Zrób po prostu:

if (cUstawienia.UstawieniaDzwieku)
    OdtworzDzwiek();

Albo nawet jeszcze lepiej - w funkcji do odtwarzania dźwięku sprawdzaj, czy ustawienia na to pozwalają i jeśli nie - przerwij.

Jedyna trudność, aby klasa cUstawienia była widoczna dla każdej strony aplikacji - najczęściej się to robi w taki sposób, aby była statycznym publicznym polem klasy App.

0

Przeniosłem klasę cUstawienia i zrobiłem ją statyczną. UstawieniaDzwieku też zrobiłem statyczną. Teraz cUstawienia.UstawieniaDzwieku jest już osiągalne na innych stronach ale teraz wywala mi błędy w:

public static bool UstawieniaDzwieku
        {
            get
            {
                return GetValueOrDefault<bool>(KluczUstDzwieku, DomyslneUstawienieDziweku); //E1
            }
            set
            {
                if (AddOrUpdateValue(KluczUstDzwieku, value)) //E2
                {
                    Save(); //E3
                }
            }
        }

E1: Error An object reference is required for the non-static field, method, or property 'ClicknSave_v2.cUstawienia.GetValueOrDefault<T>(string, T)'
E2: Error An object reference is required for the non-static field, method, or property 'ClicknSave_v2.cUstawienia.AddOrUpdateValue(string, object)'
E3: Error An object reference is required for the non-static field, method, or property 'ClicknSave_v2.cUstawienia.Save()'

0

Poczytaj o tym, co to jest static i jak działa, także o tym, co to są klasy, obiekty i instancje klas.

0

Poprawiłem swój błąd utworzyłem statyczne metody oraz zmieniłem konstruktor na statyczny. Wszystkie błędy rozwiązałem ale napotkałem nowy. Na stronie z ustawieniami

<phone:PhoneApplicationPage.Resources>
        <local:cUstawienia x:Key="appSettings"></local:cUstawienia> //błąd
    </phone:PhoneApplicationPage.Resources>

Wyskakuje mi błąd (dokładnie: "local:cUstawienia"):

Error Type 'cUstawienia' is not usable as an object element because it is not public or does not define a public parameterless constructor or a type converter.

Na msdn przeczytałem aby zmienić konstruktor na publiczny, tak zrobiłem ale dalej nie jestem w stanie się z tym uporać.

EDIT
Pozbyłem się problemu usuwając tą linie i usunąłem z linijki przełącznika "Source={StaticResource appSettings},"

<tool:ToggleSwitch x:Name="przDziwieku" IsChecked="{Binding Source={StaticResource appSettings}, Path=UstawieniaDziwieku, Mode=TwoWay}" HorizontalAlignment="Center" VerticalAlignment="Top" Height="115" IsEnabled="True" Width="197" Margin="283,2,0,0" />

No i program się skompilował jednak teraz ustawienia nie zapisują się. Po otworzeniu strony na nowo są wyłączone.

dodanie znaczników <code class="xml"> - furious programming

1 użytkowników online, w tym zalogowanych: 0, gości: 1