2014-02-19 4 views
0

Я разрабатываю приложение WP8 для лиц с нарушениями зрения, и я пытаюсь изменить цвет шрифта в приложении. У меня нет API для этого, чтобы помочь мне. То, что я пытаюсь сделать, это то, что в longlistselector будет отображаться список цветов, и пользователь может выбрать цвет и изменить цвет шрифта всего приложения. Я не лучший программист в мире, поскольку я только начал, и это приложение идет к одному из членов моей семьи. Часть, на которую я застрял, пытается ее изменить, я могу ее выбрать, но после этого никуда не будет, любые указатели или подсказки будут замечательными.Как изменить цвет шрифта в приложении WP8

public MainPage() 
{ 
    InitializeComponent(); 
    font.Add(new Theme1() { ThemeText = "White", ThemeFontSize = "40" }); 
    font.Add(new Theme1() { ThemeText = "Green", ThemeFontSize = "40" }); 
    font.Add(new Theme1() { ThemeText = "Blue", ThemeFontSize = "40" }); 

    LLsFontList.ItemsSource = font; 
} 


private void LLsFontList_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    if (LLsFontList != null && LLsFontList.SelectedItem != null) 
    { 
     var selectedItem = LLsFontList.SelectedItem as Theme1; 
     SayWords(selectedItem.ThemeText + "\r\n"); 
     var id = selectedItem.ThemeText.FirstOrDefault(); 
    } 
} 

Здесь я застреваю, должен ли я посылать этот вызов в файл ресурсов, чтобы он менял все приложение.

+0

Но как вы применяете свою тему к тексту? Что такое класс Theme1? – Romasz

+0

Тема 1 класс, где все элементы набора и get's –

ответ

1

Мое решение не самое элегантное, но я надеюсь, что это поможет вам.

Хорошо, вот как ваш класс Темы должен выглядеть следующим образом:

public class Theme : INotifyPropertyChanged  
{ 
public event PropertyChangedEventHandler PropertyChanged; 

private string themeText; 
public string ThemeText 
{ 
    get 
    { 
     return themeText; 
    } 
    set 
    { 
     themeText = value; 
     OnPropertyChanged("ThemeText"); 
    } 
} 

private int fontSize; 
public int FontSize 
{ 
    get 
    { 
     return fontSize; 
    } 
    set 
    { 
     fontSize = value; 
     OnPropertyChanged("FontSize"); 
    } 
} 

private Brush fontColor; 
public Brush FontColor 
{ 
    get 
    { 
     return fontColor; 
    } 
    set 
    { 
     fontColor = value; 
     OnPropertyChanged("FontColor"); 
    } 
} 

protected void OnPropertyChanged(string name) 
{ 
    PropertyChangedEventHandler handler = this.PropertyChanged; 
    if (handler != null) 
     handler(this, new PropertyChangedEventArgs(name)); 
} 
} 

Затем создайте привязки между вашими текстовыми блоками и объектами класса Темы:

<TextBlock x:Name="TextBlock" Text="{Binding ThemeText}" FontSize="{Binding FontSize}" Foreground="{Binding FontColor}"/> 

А насчет код позади: вы должны иметь глобальный объект темы с некоторыми значениями по умолчанию:

Theme theme = new Theme 
{ 
    ThemeText = "Red", 
    FontColor = new SolidColorBrush(Colors.Red), 
    FontSize = 40 
}; 

Затем установите DataContext для вас г TextBlock к ней (внутри страницы конструктора):

TextBlock.DataContext = theme; 

И если вы хотите изменить его, просто сделать это таким образом:

theme.ThemeText = "Blue"; 
theme.FontColor = new SolidColorBrush(Colors.Blue); 
theme.FontSize = 60; 

Если у вас есть какие-либо вопросы, не стесняйтесь спросить их.

Смежные вопросы