c# – Label和TextBlock之间的文化差异

c# – Label和TextBlock之间的文化差异,第1张

概述我一直玩 WPF一段时间,我遇到一个有趣的事情.当我将DateTime对象绑定到Label的内容时,我会看到日期的本地格式表示.但是,当我绑定到TextBlock的Text属性时,我实际上看到了英文. 看来TextBlock正在使用某种转换器,而Label只是调用ToString方法,但我不确定它. 如果是这样,为什么Label不使用转换器呢? 有人可以向我解释为什么它的运作方式呢?我提供一个简短 我一直玩 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.csusing 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;        }    }}
解决方法 如果您仔细查看Label,您会看到它来自ContentControl.

ContentPresenter显示Content属性,文档中的内容如下所示:

如果有一个TypeConverter将Content类型转换为UIElement,ContentPresenter将使用该TypeConverter,并显示生成的UIElement.

现在有一个从TypeConverter继承的DateTimeConverter,以下代码片段生成与Label相同的字符串:

var dateTimeConverter = new DateTimeConverter();var convertToString = dateTimeConverter.ConvertToString(DateTime.Now);

参考文献:

https://msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.componentmodel.datetimeconverter(v=vs.110).aspx

总结

以上是内存溢出为你收集整理的c# – Label和TextBlock之间文化差异全部内容,希望文章能够帮你解决c# – Label和TextBlock之间的文化差异所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1236380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存