Xaml DateTime привязка - PullRequest
       4

Xaml DateTime привязка

0 голосов
/ 01 февраля 2019

Я связываю DateTime в TextBlock следующим образом:

<TextBlock 
    HorizontalAlignment="Center" 
    Text="{
        Binding Source={x:Static sys:DateTime.Today}, 
        StringFormat='{}{0:dddd, MMMM dd, yyyy}'
    }"
/>

Есть ли способ сделать такое же связывание, но в течение 10 дней в прошлом, а не на сегодняшнюю дату?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Фактически вы можете сделать это в XAML только с помощью ObjectDataProvider.См .: https://docs.microsoft.com/en-us/dotnet/framework/wpf/data/how-to-bind-to-a-method

<StackPanel>
    <StackPanel.Resources>
        <ObjectDataProvider x:Key="tod" ObjectInstance="{x:Static sys:DateTime.Today}" MethodName="AddDays">
            <ObjectDataProvider.MethodParameters>
                <sys:Int32>-10</sys:Int32>
            </ObjectDataProvider.MethodParameters>
        </ObjectDataProvider>
    </StackPanel.Resources>
    <TextBlock  HorizontalAlignment="Center"  Text="{Binding Source={StaticResource tod},  StringFormat='{}{0:dddd, MMMM dd, yyyy}'}"/>
</StackPanel>
0 голосов
/ 01 февраля 2019

Добавьте статический класс следующим образом:

namespace MyWpfApplication
{
    public static class MyDateTime
    {
        public static DateTime TenDaysAgo => System.DateTime.Now.AddDays(-10);
    }
}

Затем используйте его в своем XAML (не забудьте добавить пространство имен xml):

<Window x:Class="MyWpfApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyWpfApplication">
    <TextBlock
        HorizontalAlignment="Center"
        Text="{
            Binding Source={x:Static local:MyDateTime.TenDaysAgo},
            StringFormat='{}{0:dddd, MMMM dd, yyyy}'
        }"
    />
</Window>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...