我似乎很难找到我的问题的答案(我已经阅读了很多,但没有一个为我工作)。我试图在主窗口的TextBlock中显示存储在MainWindow.xaml.cs中的一些DateTime。我正在玩它,所以我设置了一个测试代码:
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}" />
答案 0 :(得分:2)
有几件事需要解决。
第一件事是displayTime
而非属性,它是字段。添加getter / setter以使其可以进行绑定。
public DateTime displayTime { get; set; }
第二件事是Binding Path=displayTime
绑定期望displayTime
是DataContext的属性。
尝试将Window DataContext设置为self:
InitializeComponent();
DataContext = this;
或在绑定中使用相对来源:
<TextBlock Text="{Binding Path=displayTime,
StringFormat='{}{0:h \: m \: ss\.fff}',
Mode=OneWay,
RelativeSource={RelativeSource AncestorType=Window}}"/>
在小视图中绑定来自代码隐藏的属性是可以的。在更大的视图中,标记和代码可能变得非常复杂,建议为该视图创建单独的视图模型(阅读有关MVVM的信息)。