Tôi đã chơi với WPF
một lúc và tôi bắt gặp một điều thú vị. Khi tôi liên kết đối tượng DateTime
với nội dung của Label
thì tôi sẽ thấy biểu diễn được định dạng cục bộ của ngày đó. Tuy nhiên, khi tôi liên kết với thuộc tính Văn bản của TextBlock
thì tôi thực sự thấy tiếng Anh.Sự khác biệt về văn hóa giữa Nhãn và TextBlock
Có vẻ như TextBlock
đang sử dụng một số loại công cụ chuyển đổi trong khi Label
chỉ gọi phương thức ToString
nhưng tôi không chắc chắn về điều đó.
Nếu có, tại sao không sử dụng bộ chuyển đổi Label
?
Ai đó có thể giải thích cho tôi tại sao nó hoạt động theo cách đó? Tôi cung cấp một mẫu ngắn để cho phép các bạn kiểm tra những gì đang xảy ra:
// 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;
}
}
}
... và liên kết bất kỳ thứ gì với thuộc tính kiểu String chỉ cần gọi 'ToString()' –
Phải và TextBox không xuất phát từ ContentPresenter, do đó không sử dụng trình chuyển đổi. Điều đó có ý nghĩa với tôi bây giờ. Cảm ơn bạn. – greenshade
Bạn hoan nghênh !!! – Aybe