Bir süredir WPF
ile oynuyordum ve ilginç bir şeye rastladım. DateTime
nesnesini Label
içeriğine bağladığımda, tarihin yerel olarak biçimlendirilmiş temsilini görüyorum. Ancak, TextBlock
'un Text özelliğine bağlandığımda, aslında İngilizce olanı görüyorum.Label ile TextBlock arasındaki kültür farkı
TextBlock
, Label
yalnızca ToString
yöntemini çağıran bir tür dönüştürücü kullanıyor gibi görünüyor, ancak emin değilim.
Eğer öyleyse, neden Label
dönüştürücüyü kullanmıyor?
Birisi bana neden böyle çalıştığını açıklayabilir mi? Size neler olduğunu incelemek için kısa bir örnek vereyim:
// 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;
}
}
}
... ve String'in bir özelliğine herhangi bir şey bağlamanız yeterlidir. Sadece ToString() –
ve TextBox ContentPresenter'dan türetilmez, dolayısıyla bir dönüştürücü kullanmaz. Bu şimdi bana mantıklı geliyor. Teşekkür ederim. – greenshade
Rica ederim !!! – Aybe