我正在尝试创建一个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"/>
答案 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);
}
你肯定会找到很多博客,教程等等,所以我不会在这里发布所有内容。只是几个评论 - 使它成功的重要性:
Binding
定义为Property(名称非常重要)Page
需要实施INotifyPropertyChanged
- 事件,并且您应该提供触发事件的方法DataContext
Page
我的解决方案和@ Vyas_27的一句话 - 如果您的Timer
在UI上运行(那么它可能是DispatcherTimer
),这将有效。如果您在其他线程上运行计时器,则必须通过Dispatcher
调用颜色更改。