C# 将属性从MainWindow绑定到MainWindow中的TextBlock
我似乎很难找到问题的答案(我读了很多,但没有一本对我有用)。我试图在主窗口的TextBlock中显示MainWindow.xaml.cs中存储的一些日期时间。我在玩它,所以我设置了一个测试代码: MainWindow.xaml.cs:C# 将属性从MainWindow绑定到MainWindow中的TextBlock,c#,.net,wpf,xaml,data-binding,C#,.net,Wpf,Xaml,Data Binding,我似乎很难找到问题的答案(我读了很多,但没有一本对我有用)。我试图在主窗口的TextBlock中显示MainWindow.xaml.cs中存储的一些日期时间。我在玩它,所以我设置了一个测试代码: MainWindow.xaml.cs: public partial class MainWindow : Window { public DateTime displayTime; public MainWindow() { displayTime = new
public partial class MainWindow : Window
{
public DateTime displayTime;
public MainWindow()
{
displayTime = new DateTime(1,1,1,0,1,21,306);
InitializeComponent();
}
}
MainWindow.xaml:
<Window x:Class="Project1.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:Project1"
mc:Ignorable="d"
Title="Main Window" MinHeight="450" Height="450" MinWidth="650" Width="650">
<TextBlock Text="{Binding Path=displayTime, StringFormat='{}{0:h \: m \: ss\.fff}', Mode=OneWay}" />
有几件事需要解决 首先是
displayTime
not属性,它是一个字段。添加getter/setter以使其属性可用于绑定
public DateTime displayTime { get; set; }
第二件事是Binding Path=displayTime
Binding,希望displayTime
是DataContext的一个属性
尝试将窗口数据上下文设置为self:
InitializeComponent();
DataContext = this;
或在绑定中使用相对源:
<TextBlock Text="{Binding Path=displayTime,
StringFormat='{}{0:h \: m \: ss\.fff}',
Mode=OneWay,
RelativeSource={RelativeSource AncestorType=Window}}"/>
在smal视图中从代码隐藏绑定属性是可以的。在更大的视图中,标记和代码可能会变得非常复杂,建议为该视图创建单独的视图模型(了解MVVM)。@Krepsy3,如果绑定出现问题,请在运行应用程序时检查Visual Studio输出窗口。VS报告在运行时编写绑定时出现错误(错误的路径、源、类型等)@Krepsy3,Visual Studio输出窗口