我想设计一个系统界面,在那里我有不同的控件(矩形)动画(亮起或发光)一个接一个,并发送一个消息到一个队列,因为他们动画-我是新手的C#和wpf,所以不太确定如何探索这一点-任何起点?
编辑:
感谢你的例子-尽管我没有完全理解它,但我还是想出了以下几点,但仍然有一些问题:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
// public partial class MainWindow : Window
//{
// public MainWindow()
//{
// InitializeComponent();
//DataContext = this;
//}
//}
public class Glow : INotifyPropertyChanged
{
private double m_glowSize;
public event PropertyChangedEventHandler PropertyChanged;
public double GlowSize
{
get { return m_glowSize; }
set
{
m_glowSize = value;
NotifyPropertyChanged("GlowSize");
}
}
public void Window()
{
InitializeComponent();
DataContext = this;
}
private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
Canvas canvas = sender as Canvas;
if (canvas != null)
{
Point mousePosition = e.GetPosition(canvas);
GlowSize = 20 * (mousePosition.X / canvas.ActualWidth);
}
}
private void NotifyPropertyChanged(string s)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(s));
}
}
}问题似乎出在这个块上:
public void Window()
{
InitializeComponent();
DataContext = this;
}DataContext = this;做了什么?我如何正确地设置它?
发布于 2010-09-01 15:56:40
嘿,理查德,我已经收回了我之前的答案,并更新了这个新的答案,希望它能更有意义。此外,如果您想了解有关建议答案的更多信息,请使用“注释”选项。
基本上,我只是在画布上添加了一个具有发光效果的矩形,然后将光晕的大小绑定到我每次鼠标移动到Canvas上时所操作的属性。
请注意,要实现这一点,您的类后面的代码需要实现System.ComponentModel名称空间中的INotifyPropertyChanged接口。您还需要确保窗口的datacontext设置正确。
我的Window XAML的内容:
<Canvas Background="DarkGray"
MouseMove="Canvas_MouseMove">
<Rectangle Margin="40,40,0,0"
Width="200"
Height="200"
Fill="Gray"
Stroke="Black"
StrokeThickness="2">
<Rectangle.BitmapEffect>
<OuterGlowBitmapEffect GlowColor="Goldenrod"
GlowSize="{Binding Path=GlowSize}"/>
</Rectangle.BitmapEffect>
</Rectangle>
</Canvas>
</Window>我的窗口的代码隐藏:
public class Window1 : Window, INotifyPropertyChanged
{
private double m_glowSize;
public double GlowSize
{
get { return m_glowSize; }
set
{
m_glowSize = value;
NotifyPropertyChanged("GlowSize");
}
}
public Window1() //this is my class constructor
{
DataContext = this;
InitializeComponent();
}
private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
Canvas canvas = sender as Canvas;
if (canvas != null)
{
Point mousePosition = e.GetPosition(canvas);
GlowSize = 20 * (mousePosition.X / canvas.ActualWidth);
}
}
private void NotifyPropertyChanged(string s)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(s));
}
}作为对DataContext的一种非常基本的解释,您可以将其视为绑定将寻找其绑定属性的对象。在本例中,我们希望确保窗口的XAML中的绑定可以在它的代码隐藏文件中找到。
另外,如果您还没有这样做。看一下这个http://msdn.microsoft.com/en-us/library/aa970268.aspx
刚开始的时候,我发现它很有帮助
希望能有所帮助。
https://stackoverflow.com/questions/3590768
复制相似问题