我已经使用WPF玩了一段时间,遇到了一个有趣的事情。当我将DateTime对象绑定到Label的内容时,我看到本地格式化的日期表示。然而,当我绑定到TextBlock的Text属性时,我实际上看到的是英文表示。
似乎TextBlock正在使用某种转换器,而Label只是调用ToString方法,但我不确定。
如果是这样,为什么Label不使用转换器呢?
它能这样工作的原因是什么?我提供了一个简短的示例,让你们检查一下发生了什么:
// MainWindow.xaml
<Window x:Class="BindConversion.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"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel HorizontalAlignment="Center" Margin="3">
<StackPanel>
<Label Content="{Binding Dt}"/>
<TextBlock Text="{Binding Dt}"/>
</StackPanel>
</StackPanel>
</Window>
// MainWindow.xaml.cs
using System;
using System.Windows;
namespace BindConversion
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public DateTime Dt { get; set; }
public MainWindow()
{
InitializeComponent();
DataContext = this;
Dt = DateTime.Now;
}
}
}
ToString()
。 - 15ee8f99-57ff-4f92-890c-b56153