如何在xaml.cs中更改wp8中省略号的颜色

时间:2014-05-24 08:17:43

标签: windows-phone-8 colors

我正在尝试创建一个Windows Phone 8 app.in这个应用程序我有一个页面上的4个省略号,我希望他们每15秒更改一个整数值的颜色。我有计时器部分,但我坚持如何让他们改变颜色。我真的很感激一些帮助。

我用Google搜索了很多,但找不到明确的解决方案。我是应用程序的新手,所以请告诉我每一步 这是我在xaml中创建它们的地方:

<Ellipse x:Name="l1" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="42,339,0,0" Stroke="Black" VerticalAlignment="Top" Width="100" Grid.ColumnSpan="2"/>
<Ellipse x:Name="l2" Grid.Column="1" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="111,339,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>
<Ellipse x:Name="l3" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="42,471,0,0" Stroke="Black" VerticalAlignment="Top" Width="100" Grid.ColumnSpan="2"/>
<Ellipse x:Name="l4" Grid.Column="1" Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="100" Margin="111,471,0,0" Stroke="Black" VerticalAlignment="Top" Width="100"/>

2 个答案:

答案 0 :(得分:2)

尝试实现这一点;

yourEllipsesName.Fill = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255(R), 255(G), 255(B)));

用这个你可以传递RGB格式的颜色代码。希望这会有所帮助。

答案 1 :(得分:0)

提供的solution @Vyas_27是最简单的(+1),在大多数情况下是足够的。

在您开始时,您可能想了解一些有关DataBinding的内容。在这种情况下,您的代码可能如下所示:

在XAML中:

<Ellipse x:Name="l1" Fill="{Binding FirstBrush}" HorizontalAlignment="Left" Height="100" Margin="42,339,0,0" Stroke="Black" VerticalAlignment="Top" Width="100" Grid.ColumnSpan="2"/>
// other similar

在xaml.cs后面的代码中:

public partial class MainPage : PhoneApplicationPage, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public void RaiseProperty(string propName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propName)); }

    private Color firstColor = Color.FromArgb(0xFF, 0xF4, 0xF4, 0xF5);
    public Color FirstColor
    {
        get { return firstColor; }
        set { firstColor = value; RaiseProperty("FirstBrush"); }
    }
    public SolidColorBrush FirstBrush { get { return new SolidColorBrush(firstColor); } }
    public MainPage()
    {
        InitializeComponent();
        this.DataContext = this; // set the DataContext so binding can work
    }

    // Then you change the color like this, and the color of your ellipse is updated
    FirstColor = Color.FromArgb(255, 120, 120, 0);
}

你肯定会找到很多博客,教程等等,所以我不会在这里发布所有内容。只是几个评论 - 使它成功的重要性:

    如您所见,在XAML中
  • ,将Binding定义为Property(名称非常重要)
  • 您的Page需要实施INotifyPropertyChanged - 事件,并且您应该提供触发事件的方法
  • 设置DataContext
  • Page
  • 您绑定的属性必须是具有合适getter的公共属性(对于OneWay绑定)

我的解决方案和@ Vyas_27的一句话 - 如果您的Timer在UI上运行(那么它可能是DispatcherTimer),这将有效。如果您在其他线程上运行计时器,则必须通过Dispatcher调用颜色更改。