Привязка к текстовому блоку - PullRequest
0 голосов
/ 25 ноября 2011

Я хочу изменить цвет или стиль текстового блока в коде с привязкой Viewmodel. Вот что я получил:

<TextBlock 
     Visibility="{Binding SubTitleVisibility}" 
     Text="{Binding SubTitle1}" 
     TextWrapping="Wrap" 
     Margin="12,-6,12,0" 
     Style="{Binding SubColor}"/>

Здесь работает любая привязка, кроме стиля. Хотя применяется размер шрифта, но без цвета. (Как сказала бы Королева, это своего рода магия)

Посмотреть модель:

    internal DisplayMode Mode
    {
        get
        {
            return _mode;
        }
        set
        {
            //if (value != _type)
            //{
            _mode = value;
            if (value.Equals(DisplayMode.EditMode) && _type.Equals(ItemType.WithIcon))
            {
                _iconVisibility = Visibility.Visible;
                SubTitleVisibility = Visibility.Collapsed;
            }
            else if (_type.Equals(ItemType.WithSubTitle))
            {
                _iconVisibility = Visibility.Collapsed;
                SubTitleVisibility = Visibility.Visible;
            }

            NotifyPropertyChanged("Mode");
            NotifyPropertyChanged("SubColor");
        }
    }

    internal Style SubColor
    {
        get
        {
            Style temp; 
            if (_group != "phone" && _group != "email" && _mode == DisplayMode.ViewMode)
                temp = (Style)App.Current.Resources["PhoneTextNormalStyle"];
            else
                temp = (Style)App.Current.Resources["PhoneTextAccentStyle"];

            return temp;
        }
    }

Я нашел этот кодсниппет здесь , но он даже не перейдет в метод get SubColor.

Заранее спасибо за помощь.

1 Ответ

2 голосов
/ 25 ноября 2011

Ваш подход неверен.Вы не должны пытаться привязать стиль к вашей ViewModel, вместо этого используйте Выбор шаблона данных .

...