gpt4 book ai didi

wpf - 在WPF应用程序屏幕上看不到日期时间文本

转载 作者:行者123 更新时间:2023-12-03 10:14:06 28 4
gpt4 key购买 nike

我正在尝试编写一个简单的MVVM应用程序。该示例的期望是在屏幕上显示时间。
xaml设计师曾经在设计师中展示过一次时间
enter image description here

但是当我运行该应用程序时,我根本没有在屏幕上看到时间。
您能帮我找到问题所在吗?
我在这里附加代码。

MainWindow.xaml

    <Window x:Class="WPFDigitalClock.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPFDigitalClock"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:ClockVM/>
</Window.DataContext>
<Grid>
<StackPanel>
<TextBlock Foreground="White" Background="Black" FontSize="30" TextAlignment="Center" Text="{Binding Path=DisplayTime}"/>
</StackPanel>
</Grid>
</Window>

MainWindow.xaml.cs
using System.Windows;

namespace WPFDigitalClock
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}

ClockVM.cs
using System;
using System.ComponentModel;
using System.Windows.Threading;

namespace WPFDigitalClock
{
class ClockVM : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private ClockModel clockModel;

DispatcherTimer Timer = new DispatcherTimer();
public string DisplayTime { get; set; }

public ClockVM()
{
clockModel = new ClockModel();
DisplayTime = "";
Timer.Interval = new TimeSpan(0, 0, 1);
Timer.Tick += new EventHandler(Timer_Click);
Timer.Start();

}

private void Timer_Click(object sender, EventArgs e)
{
DisplayTime = clockModel.Hour + ":" + clockModel.Minute + ":" + clockModel.Second;
if (PropertyChanged != null)
{
PropertyChanged(sender, new PropertyChangedEventArgs("DisplayTime"));
}
}
}
}

ClockModel.cs
using System;

namespace WPFDigitalClock
{
class ClockModel
{
public string Hour
{
get { return DateTime.Now.Hour.ToString(); }
}

public string Minute
{
get { return DateTime.Now.Minute.ToString(); }
}

public string Second
{
get { return DateTime.Now.Second.ToString(); }
}
}
}

最佳答案

问题在于您如何引发了属性DisplayTime的更改。在DispatcherTimer.Tick处理程序中使用以下代码:

 private void Timer_Click(object sender, EventArgs e)
{
DisplayTime = clockModel.Hour + ":" + clockModel.Minute + ":" + clockModel.Second;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("DisplayTime"));
}
}

You have passed the sender object as argument in PropertyChanged method. It expect owner class of Property DisplayTime in sender argument.

关于wpf - 在WPF应用程序屏幕上看不到日期时间文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35523157/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com