【问题标题】:Change the Color of a Rectangle Windows Phone 8更改矩形 Windows Phone 8 的颜色
【发布时间】:2014-07-09 05:07:28
【问题描述】:

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

xaml 示例。

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

【问题讨论】:

    标签: c# xaml windows-phone-8


    【解决方案1】:

    这样的事情应该可以解决问题。显然,您需要将solidcolourbrush 的颜色设置为您想要的颜色。

        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;
        }
    

    【讨论】:

    • windows phone 8 似乎不支持 SolidColorBrush。
    • 是的。它位于 System.Windows.Media 命名空间中。尝试添加“使用 System.Windows.Media;”让您在课堂上名列前茅
    • 终于!太感谢了!我已经看到大量的代码围绕着这些画笔旋转,我觉得它们不工作的方式有点奇怪。再次感谢。
    • 没问题。如果这解决了问题,您可以将其标记为答案吗?
    【解决方案2】:

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

    例如

    <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 事件,因此当在点击事件上设置填充颜色属性时,XAML 会自动更新自身。

    ViewModel 非常值得在 Windows Phone 中学习,因为它们可以通过消除大量手动代码管道让生活变得更轻松,并让您的代码更整洁。

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-10
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多