什么是将变量从后面的代码(App.xaml.cs)绑定到App.xaml的最佳方法,因此如果需要,我可以在我的应用程序中的任何地方引用此资源。
找到这个有意义的课程。我应该能够将应用程序资源绑定到[icode] NotifyingDateTime [/ icode],它将在该类更改时更新。
public class NotifyingDateTime : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private DateTime _now;
public NotifyingDateTime()
{
_now = DateTime.Now;
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(100);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
public DateTime Now
{
get { return _now; }
private set
{
_now = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Now"));
}
}
void timer_Tick(object sender, EventArgs e)
{
Now = DateTime.Now;
}
}
我无法弄清楚如何绑定它,也不知道绑定是否会执行Class,以便DispatcherTimer将在应用程序启动时启动。
希望这是有道理的。
答案 0 :(得分:1)
在黑暗中刺伤......不清楚你在问什么,但根据你展示的代码(看起来像一个视图模型),你可以将它的一个实例应用到windows datacontext。然后窗口中的任何绑定都将链接到此viewmodel及其属性。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:NotifyingDateTime></local:NotifyingDateTime>
<TextBlock Text="{Binding Now}"></TextBlock>
</Window.DataContext>
</Window>
请务必更新xmlns:local="clr-namespace:WpfApplication1"
如果您想首先创建视图模型,那么事情会变得更高级,然后您需要查看Caliburn.Micro
之类的视图答案 1 :(得分:1)
只需在Application.Resources下声明NotifyingDateTime实例,并使用Now属性绑定Text。
<Application.Resources>
<local:NotifyingDateTime x:Key="NotifyingDateTime"/>
<TextBlock x:Key="latestTime"
Text="{Binding Source={StaticResource NotifyingDateTime}, Path=Now}"/>
</Application.Resources>
当然,你必须在App的根目录定义本地命名空间,以指向定义了NotifyingDateTime类的命名空间。
现在,您可以将它用作任何您想要的资源:
<ContentControl Content="{StaticResource latestTime}"/>