Ich habe eine Weile mit WPF
gespielt und bin auf eine interessante Sache gestoßen. Wenn ich DateTime
Objekt an den Inhalt Label
binde dann sehe ich lokal formatierte Darstellung des Datums. Wenn ich jedoch an die Text-Eigenschaft TextBlock
binde, sehe ich tatsächlich Englisch.Kulturunterschied zwischen Label und TextBlock
Es scheint, dass TextBlock
eine Art von Konverter verwendet, während Label
ruft nur ToString
Methode, aber ich bin mir nicht sicher darüber.
Wenn ja, warum verwendet der Label
den Konverter nicht auch?
Könnte mir jemand erklären, warum funktioniert es so wie es ist? Ich stelle eine kurze Probe zur Verfügung, damit ihr sehen könnt, was vor sich geht:
// 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;
}
}
}
... und alles an eine Eigenschaft vom Typ String zu binden, ruft nur 'ToString()' –
Richtig, und die TextBox stammt nicht von ContentPresenter, also keinen Konverter verwenden. Das macht jetzt Sinn für mich. Vielen Dank. – greenshade
Willkommen !!! – Aybe