Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将属性从MainWindow绑定到MainWindow中的TextBlock_C#_.net_Wpf_Xaml_Data Binding - Fatal编程技术网

C# 将属性从MainWindow绑定到MainWindow中的TextBlock

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

我似乎很难找到问题的答案(我读了很多,但没有一本对我有用)。我试图在主窗口的TextBlock中显示MainWindow.xaml.cs中存储的一些日期时间。我在玩它,所以我设置了一个测试代码:

MainWindow.xaml.cs:

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输出窗口