改变矩形的颜色Windows Phone 8



我正在创建一个带有矩形网格的Windows Phone 8应用程序。使用填充属性,每个矩形都以特定的颜色开始。我希望能够通过点击它来改变矩形的颜色,但是,我无法找到从c#代码端修改填充属性的方法。有办法让这成为可能吗?我看到了很多关于Brush类的信息,但它似乎不支持windows phone 8。

示例:

<Rectangle x:Name="mon9a" Fill="#FFD69F50" HorizontalAlignment="Left" Height="48" Margin="58,94,0,0" Stroke="Black" VerticalAlignment="Top" Width="73" Tap="mon9a_Tapped"/>

类似这样的操作应该可以达到目的。显然,你需要将solidcolorbrush的颜色设置为你想要的颜色。

    private void rectangle_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        // Change this colour to whatever colour you want.
        SolidColorBrush mySolidColorBrush = new SolidColorBrush();
        mySolidColorBrush.Color = Color.FromArgb(255, 255, 255, 0);
        System.Windows.Shapes.Rectangle rect = (System.Windows.Shapes.Rectangle)sender;
        rect.Fill = mySolidColorBrush;
    }

实现这一点的最好方法是为页面创建一个ViewModel,并将矩形填充属性绑定到那里的属性。

<Rectangle x:Name="mon9a" Fill="{Binding MyFillProperty, Mode=OneWay}" HorizontalAlignment="Left" Height="48" Margin="58,94,0,0" Stroke="Black" VerticalAlignment="Top" Width="73" Tap="mon9a_Tapped"/>

你要么需要一个属性在你的ViewModel中的每个矩形,或者更优雅一点,你在你的页面的ViewModel中有一个矩形的集合,你绑定到这个集合,以便在页面上呈现你的矩形(所以你不需要手动添加每个)。集合中的每一个矩形对象都是一个ViewModel对象,它会引发相应的Property Changed事件,这样当在tap事件上设置Fill color属性时,XAML就会自动更新自己。

ViewModels非常值得在Windows Phone中学习,因为它们将通过删除大量手动代码管道使生活变得更容易,并使您的代码更干净。

最新更新