2010-06-11 2 views
2

Я загрузил Microsoft Visual Studio 2010 Express для Windows Phone, и я написал простое приложение для первой проверки эмулятора. В этом приложении у меня есть только кнопка со свойством Content, привязанным к строке под названием ButtonText и с свойством Background, привязанным к SolidColorBrush с именем FillColor. Я обработал Click событие с этим кодом:
Первый тест приложения Windows Phone

void MyButton_Click(object sender, RoutedEventArgs e) 
    { 
     if (toggle == true) 
     { 
      ButtonText = "Blue"; 
      FillColor = new SolidColorBrush(Colors.Blue); 
     } 
     else 
     { 
      ButtonText = "Red"; 
      FillColor = new SolidColorBrush(Colors.Red); 
     } 
     toggle = !toggle; 
    } 

К сожалению, это не работает. Пока содержимое кнопки изменяется при каждом нажатии кнопки, я не могу сказать то же самое для фона, который остается одного цвета.
Не могли бы вы рассказать мне, что не так? Спасибо.

Я также разместить XAML:

<Grid x:Name="ContentGrid" Grid.Row="1"> 
     <Button Name="MyButton" Width="300" Height="300" 
       Content="{Binding Path=ButtonText}" 
       Background="{Binding Path=FillColor}" /> 
    </Grid> 
+0

Интересно. Кажется button1.Background = новый SolidColorBrush (Colors.Red); также не работает, поэтому не является обязательной проблемой. Возможно, стоит опубликовать это на Connect, если объяснение не ожидается .. есть категория wp7 под VS. –

+0

Настройка fillColor = новый SolidColorBrush (Colors.Red); работает для инициализации фона. Он не работает только при изменении этого свойства. –

+0

Вы устанавливаете dataContext страницы? –

ответ

1

Вопрос заключается с использованием "нового" в строке:

FillColor = новый SolidColorBrush (Colors.Blue);

Использование «новой» операции прерывает привязку данных, которая была предварительно настроена. Попробуйте использовать вместо этого:

FillColor.Color = Colors.Blue;

Замените оба изменения на синий и красный, и это должно сделать трюк.

HTH!
Chris

+0

Благодарим вас за ответ. Тип FillColor не цвет, а SolidColorBrush. Если я преобразую его в Color, это не сработает, потому что тип фона не цвет. Кроме того, я не согласен с вами, когда вы говорите, что «новая» операция нарушает привязку данных, на самом деле те же решения прекрасно работают на веб-сайте silverlight. –

+0

Если вы заметили в своем ответе, я предложил вам изменить значение свойства цвета FillColor, а не самого свойства FillColor. В моем воссоздании вашей проблемы, которая фиксировала основную проблему. Я столкнулся с той же проблемой с ObservableCollection, где создание экземпляра внутри вашего кода после привязки данных фактически переломит привязку. Я могу предоставить полные примеры кода, чтобы показать это более подробно, если вам интересно ... –

+0

Еще раз спасибо Крису. Меня интересует образец кода. Вы можете найти мое электронное письмо в моем профиле. Я буду рад вашей помощи, если вы пришлете мне образцы кода. –

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