【发布时间】:2016-08-26 18:39:34
【问题描述】:
我玩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;
}
}
}
【问题讨论】: