WPF, ячейка Datagrid меняет дату выбора даты - PullRequest
0 голосов
/ 01 мая 2020

Проблема, с которой я борюсь, заключается в следующем: у меня есть указатель даты в столбце шаблона сетки данных, после того как я выбрал дату в указателе даты, которая имеет запрошенный мной формат, это yyyy-MM-dd, затем сразу в в ячейке таблицы данных формат изменяется на дд / мм / гггг чч: мм: сс тт. (это похоже на локальный windows формат даты и времени, который я сейчас использую) Что я делаю не так и почему ячейка сетки меняет формат. Это XAML:

<DataGridTemplateColumn Header="DueDate">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding XPath=//cbc:DueDate | //cac:PaymentMeans/cbc:PaymentDueDate}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                            <DatePicker SelectedDate="{Binding XPath=//cbc:DueDate | //cac:PaymentMeans/cbc:PaymentDueDate}" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                </DataGridTemplateColumn>

Это снимок экрана с указателем даты: введите описание изображения здесь

Это измененный результат в ячейке таблицы данных. введите описание изображения здесь

xaml заголовки:

   <Window.Resources>
    <local:StringToDateConverter x:Key="StringToDateConverter" />
    <XmlNamespaceMappingCollection x:Key="mapping">
        <XmlNamespaceMapping Uri="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" Prefix="cac" />
        <XmlNamespaceMapping Uri="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" Prefix="cbc" />
        <XmlNamespaceMapping Uri="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" Prefix="i" />
        <XmlNamespaceMapping Uri="urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2" Prefix="c" />
    </XmlNamespaceMappingCollection>
    <XmlDataProvider x:Name="dataprovider" XmlNamespaceManager="{StaticResource mapping}" x:Key="xmlProvider" />
    <Style x:Key="DataGridCellStyle"  TargetType="{x:Type DataGridCell}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=Content.Text, RelativeSource={RelativeSource Self}}"  Value="" >
                <Setter Property="Background" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>

</Window.Resources>

1 Ответ

0 голосов
/ 01 мая 2020

DatePicker форматирует даты определенным образом, но после того, как вы закончили sh редактирование ячейки, DatePicker исчезает и заменяется TextBlock (переключается с CellEditingTemplate на CellTemplate) , TextBlock будет использовать форматирование по умолчанию при преобразовании даты, если вы не укажете ее иначе.

Попробуйте это:

<TextBlock Text="{Binding XPath=//cbc:DueDate | //cac:PaymentMeans/cbc:PaymentDueDate, StringFormat={}yyyy-MM-dd}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...