序言
我正在编写一个程序,该程序的地图类包含背景图像和具有颜色,位置和动画属性的节点列表(ObservableCollection)。顶部的WPF应用程序对此进行了引用
问题
我有一个GameMapModel类型的对象,其中包含一个可观察到的GameMapNode类型的集合:
var category1 = ["item1", "item2", "item3"];
var category2 = ["item4", "item5", "item6", "item7", "item8"];
var category3 = ["item9", "item10"];
var allcategories = [category1, category2, category3];
然后我有一个UserControl,它根据GameMapModel的内容呈现地图背景和节点:
[AddINotifyPropertyChangedInterface]
public class GameMapModel
{
public ObservableCollection<GameMapNode> GameMapNodes { get; set; } = new ObservableCollection<GameMapNode>();
public GameMapNode SelectedNode { get; set; }
public BitmapImage Background { get; set; } = GameMap.jpg; //Link removed for forum post.
public GameMapModel()
{
//SelectedNode = new GameMapNode(0, 0, Brushes.White, "Default");
}
}
[AddINotifyPropertyChangedInterface]
public class GameMapNode
{
public int X { get; set; } = 0;
public int Y { get; set; } = 0;
public Brush Colour { get; set; } = Brushes.Gray;
public string Name { get; set; } = "Default";
public bool Pulse { get; set; } = false;
public bool Spin { get; set; } = false;
public bool Throb { get; set; } = false;
public bool Bounce { get; set; } = false;
public GameMapNode(int x, int y, Brush colour, String name)
{
X = x;
Y = y;
//Colour = colour;
Name = name;
}
public void ChangeTeam()
{
if (Colour == Brushes.Blue)
{
Colour = Brushes.Red;
Spin = true;
Bounce = true;
Pulse = true;
Throb = true;
}
else
{
Colour = Brushes.Blue;
Spin = false;
Bounce = false;
Pulse = false;
Throb = false;
}
}
}
现在所有这些都可以正常工作 IF ,当我创建GameMapNode的新实例并将其添加到集合中时,Spin,Bounce和Throb都为false,之后,我可以将其中的任何一个都设置为true和动画按预期工作。
如果在对象创建过程中将这3个设置为true,则会出现以下错误,程序崩溃:
System.Windows.Markup.XamlParseException:” [未知]属性未指向路径'(0)。(1)[0]。(2)'中的DependencyObject。'
如果我注释掉XAML的Spin / Throb / Bounce DoubleAnimation块,则动画不起作用,但程序不会崩溃。
即使在对象创建过程中将Pulse设置为true,Opacity动画也无法正常工作。
这使我认为与TransformGroup实现有关某事,因为这并未用于脉冲。也许在首次尝试DataTrigger之前未加载它们?
这是我的第一个真正的WPF应用程序,我有一位出色的导师帮助我完成了该应用程序,但即使他也感到沮丧。任何建议的帮助将不胜感激:)