Должен отформатировать даты в динамично созданном WPF DataGrid

Измените свой код в main.py на:

import test 

print("Welcome to Spanish Verb Conjugator")
verb = raw_input("Enter the verb: ")
length = len(verb)

#print(length)

v1 = length - 2
r1 = length - 1
v = verb[v1]
r = verb[r1]
end = str(v+r)
print end
stem = verb[0:v1]


tense = raw_input("Choose your tense: ")
if tense == "present":
    test.testt(end)

и измените test.py на:

def testt(ending):
    if ending == "ar":
        form = raw_input("Form: ")
        if form == "yo":
            return form + " " + stem + "o"

Кроме того ,

[118 ] stem не будет работать в test.py, как это определено в main.py

30
задан FarrEver 11 May 2009 в 15:38
поделиться

5 ответов

Я понял, как это сделать в коде ... надеюсь, есть способ имитировать это в XAML. (Пожалуйста, опубликуйте, если вы найдете рабочий образец XAML.)

Для выполнения этого в коде добавьте обработчик событий для события AutoGeneratingColumn Grid, например:

private void ResultsDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    if (e.PropertyType == typeof(DateTime))
    {
        DataGridTextColumn dataGridTextColumn = e.Column as DataGridTextColumn;
        if (dataGridTextColumn != null)
        {
            dataGridTextColumn.Binding.StringFormat = "{0:d}";
        }
    }
}
32
ответ дан 27 November 2019 в 22:59
поделиться

Я бы использовал DataTemplate с DataType, равным Date или DateTime (в зависимости от того, как он появится). Поместите TextBlock в DataTemplate с StringFormat в привязке.

Что-то вроде этого должно работать (непроверено)

<DataTemplate DataType="{x:Type DateTime}">
    <TextBlock Text="{Binding StringFormat={0:d}}"  />
</DataTemplate>

Или, если вы хотите, чтобы это применялось только в сетке

<wpfToolkit:DataGrid>
    <wpfToolkit:DataGrid.Resources>
        <DataTemplate DataType="{x:Type DateTime}">
            <TextBlock Text="{Binding StringFormat={0:d}}"  />
        </DataTemplate>
    </wpfToolkit:DataGrid.Resources>
    ...
</wpfToolkit:DataGrid>
7
ответ дан 27 November 2019 в 22:59
поделиться

Отформатируйте привязку с помощью StringFormat :

<DataGridTextColumn Header="Fecha Entrada" 
                    Width="110"  
                    Binding="{Binding EnterDate, StringFormat={}\{0:dd/MM/yyyy hh:mm\}}"
                    IsReadOnly="True" />

Я думаю, это лучше, чем писать код за частями кода

48
ответ дан 27 November 2019 в 22:59
поделиться

Ответ Фаррэвера, 11 мая, хорош, но я считаю, что он не работает. я все еще получаю американский мм / дд / ггг вместо моего немецкого дд / мм / гггг. Поэтому я предлагаю найти региональные настройки компьютера и использовать их в StringFormat

    Private Sub DGrid_AutoGeneratingColumn(ByVal sender As System.Object, ByVal e As Microsoft.Windows.Controls.DataGridAutoGeneratingColumnEventArgs)
    If e.PropertyType Is GetType(DateTime) Then
        Dim dataGridTextColumn As DataGridTextColumn = TryCast(e.Column, DataGridTextColumn)
        If dataGridTextColumn IsNot Nothing Then
            Dim ShortDatePattern As String = System.Globalization.DateTimeFormatInfo.CurrentInfo.ShortDatePattern
            dataGridTextColumn.Binding.StringFormat = "{0:" + ShortDatePattern + "}" '"{0:dd/MM/yyyy}"
        End If
    End If
End Sub

см. Также: мой блог

0
ответ дан 27 November 2019 в 22:59
поделиться

Привет, вы можете установить информацию о культуре локали в конструкторе формы WPF как

this.Language = XmlLanguage.GetLanguage (CultureInfo.CurrentCulture.IetfLanguageTag);

или вы можете включить разметку xml xml: lang = "en-GB" в разметку заголовка окна

19
ответ дан 27 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: