我有一个名为的类Date
,它覆盖它ToString
并通过属性返回它:
public string DateString
{
get { return ToString(); }
}
我的实例Date
保存在容器类中并从那里进行操作。在 XAML 中,重写的 ToString 显示如下:
<TextBlock Text="{Binding Container.Date.DateString, Source={StaticResource Locator}}" />
定位器在 App.xaml 中定义:
<data:Locator x:Key="Locator" />
定位器类包括:
public class Locator
{
static Locator()
{
Container = new GameContainer();
}
public static GameContainer Container { get; set; }
}
游戏容器包括:
public class GameContainer
{
public GameContainer()
{
Date = new Date();
}
public Date Date { get; set; }
}
我也尝试过使用 IOC 容器,但没有成功。
程序启动后,一切正常;单击按钮会增加日期(并调用RaisePropertyChanged
)DateString
。但是,如果我创建容器的新实例或 的新实例Date
,UI 将不再更新,我不知道为什么。它似乎只发生在用户交互发生之后;我可以在程序初始化的各个阶段创建一个新实例而没有任何问题,但是一旦单击按钮导致创建一个新实例,字符串就不再更新。
我已经尝试了我能想到的一切,但我似乎无法弄清楚是什么导致了这种情况发生。任何帮助,将不胜感激。
更新:目前我的依赖属性如下:
public static readonly DependencyProperty ContainerProperty =
DependencyProperty.Register("Container", typeof(GameContainer), typeof(Locator));
public static GameContainer Container
{
get { return (GameContainer)GetValue(ContainerProperty); }
set
{
SetValue(ContainerProperty, value);
}
}
我收到此错误:非静态字段、方法或属性“System.Windows.DependencyObject.GetValue(System.Windows.DependencyProperty)”需要对象引用