C# Windows Phone应用程序的首次测试

C# Windows Phone应用程序的首次测试,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我下载了适用于Windows Phone的Microsoft Visual Studio 2010 Express,并编写了一个简单的应用程序来对模拟器进行第一次测试。在这个应用程序中,我只有一个按钮,其属性内容绑定到名为ButtonText的字符串,属性背景绑定到名为FillColor的SolidColorBrush。我用以下代码处理单击事件: void MyButton_Click(object sender, RoutedEventArgs e) { if

我下载了适用于Windows Phone的Microsoft Visual Studio 2010 Express,并编写了一个简单的应用程序来对模拟器进行第一次测试。在这个应用程序中,我只有一个按钮,其属性内容绑定到名为ButtonText的字符串,属性背景绑定到名为FillColor的SolidColorBrush。我用以下代码处理单击事件:

    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>

问题在于在以下行中使用“new”:

FillColor=新的SolidColorBrush(Colors.Blue)

使用“新建”操作会破坏以前设置的数据绑定。请尝试使用以下选项:

FillColor.Color=Colors.Blue

将这两个更改都替换为蓝色和红色,这样就可以了



克里斯很有趣。背景=新的SolidColorBrush(Colors.Red);也不起作用,所以不是约束性问题。如果无法提供解释,可能值得在Connect上发布此内容。。VS设置fillColor=new SolidColorBrush(Colors.Red)下有一个wp7类别;用于初始化背景。只有当该属性被更改时,它才起作用。你正在设置页面的dataContext吗?@Chris:是的,我设置了。事实上,按钮的内容属性发生了变化。谢谢您的回答。FillColor的类型不是颜色,而是SolidColorBrush。如果我把它转换成颜色,它就不工作了,因为背景的类型不是颜色。此外,当你说“新建”操作破坏了数据绑定时,我不同意你的说法,事实上,相同的解决方案在silverlight网站上非常有效。如果你在我的回复中注意到,我建议你更改FillColor的Color属性的值,而不是FillColor属性本身。在我对你的问题的重新思考中,你解决了基本问题。我在ObservaleCollection中也遇到过同样的问题,在数据绑定后在代码中重新创建实例实际上会破坏绑定。如果您感兴趣,我可以提供完整的代码示例,以更详细地展示这一点……再次感谢Chris。我对你的代码样本感兴趣。您可以在我的个人资料中找到我的电子邮件。如果你能寄给我代码样本,我会很高兴你的帮助。