2011-08-11 99 views
4

两个按钮这个按钮行为:为什么在WP7不同

<Button Content="Button" Height="72" HorizontalAlignment="Left" Margin="10,10,0,0" Name="button1" VerticalAlignment="Top" Width="160" Click="button1_Click" /> 
    <Button Content="Button" Height="72" HorizontalAlignment="Left" Margin="10,92,0,0" Name="button2" VerticalAlignment="Top" Width="160" /> 

自我解释代码:

public MainPage() 
    { 
     InitializeComponent(); 
     button1.Background = new SolidColorBrush(Colors.Red);    
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     Color c = ((SolidColorBrush)((Button)sender).Background).Color; 

     if (c == Colors.Red) 
     { 
      c = Colors.Green; 
     } 
     else if (c == Colors.Green) 
     { 
      c = Colors.Blue; 
     } 
     else if (c == Colors.Blue) 
     { 
      c = Colors.Red; 
     } 
     else 
     { 
      c = Colors.Yellow; 
     } 

     ((Button)sender).Background = new SolidColorBrush(c); 
     button2.Background = new SolidColorBrush(c); 
    } 

在一个普通的Silverlight应用程序如预期寄托都工作的。然而,在Windows Phone 7中,完全相同的代码行为如下:

button1不会改变颜色(它只是保持红色) button2确实会改变颜色,除非我点击它,在这种情况下,当我点击button1时它不再改变颜色(即它的颜色现在也卡住了)

线索enyone?

+0

在这里多次。使用视觉状态http://stackoverflow.com/questions/3476963/windows-phone-7-wp7-change-a-buttons-background-color-on-click –

+0

请参阅http://blogs.msdn.com/b/ ptorr/archive/2010/06/18/why-can-ti-change-the-background-of-my-button-on-a-click-event.aspx –

回答

1

之后应该做的伎俩:

var btn = sender as Button; 
var brush = ((SolidColorBrush)btn.Background); 

if (brush.Color == Colors.Red) 
    brush.Color = Colors.Green; 
else if (brush.Color == Colors.Green) 
    brush.Color = Colors.Blue; 
else if (brush.Color == Colors.Blue) 
    brush.Color = Colors.Red; 
else 
    brush.Color = Colors.Yellow; 

btn.Background = brush; 
button2.Background = brush; 
0

我会尝试这样设置按钮的背景。这将运行(至少对我的理解)按钮的线程在后台代码

 button2.Dispatcher.BeginInvoke(delegate 
     { 
      button2.Background = new SolidColorBrush(c); 
     }); 

我不知道这是否会解决任何事情,但它是值得一试。

-Woody

+0

尝试过 - 没有运气 – descf

+0

那么我有没有。对不起 – Woody

+0

谢谢你的尝试! – descf