wpf, как привязать текущую дату? - PullRequest
4 голосов
/ 08 декабря 2010

У меня есть элемент управления TextBlock, к которому я хотел бы привязать текущую системную дату, как я могу сделать это с помощью кода позади?

Цель состоит в том, чтобы отобразить в этом TecBlock текущие системные дату и время, и яне нужно обновлять элемент управления все время, только один раз.

Я надеюсь, что это самый простой код. Я не хочу создавать свойство dateTime.Следуйте мой код: это неправильно, что он не может найти BindSource

  Binding bd = new Binding("System.DateTime.Now");
        bd.Source = this;
        textBox.SetBinding(TextBox.TextProperty, bd);

Спасибо за помощь

Ответы [ 4 ]

20 голосов
/ 08 декабря 2010

Текущую дату покажет только один раз.

создать псевдоним пространства имен:

  xmlns:sys="clr-namespace:System;assembly=mscorlib"


<TextBlock Text="{Binding Source={x:Static sys:DateTime.Today},   
       StringFormat='{}{0:dddd, MMMM dd, yyyy}'}"/> 
2 голосов
/ 08 декабря 2010

Технически говоря, вы можете привязать текущее время, как в примере ниже, но без надлежащего связывания, как упоминал SLaks, вы вообще не сможете его обновить.

<Window x:Class="testWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:src="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ObjectDataProvider x:Key="date" ObjectType="{x:Type src:DateTime}"/>
    </Window.Resources>
    <Grid>
        <TextBox Text="{Binding Source={StaticResource date}, 
                        Path=Now, Mode=OneWay}" />
    </Grid>
</Window>
2 голосов
/ 08 декабря 2010

Нельзя связать со статическим свойством.

Вам необходимо создать класс со свойством, которое возвращает DateTime.Now, и вызывать событие PropertyChanged каждый день или каждую секунду. (используя таймер)

1 голос
/ 08 декабря 2010

Я думаю, что вы хотите сделать это в коде позади. Создайте свойство класса в своем классе и установите привязку к этому свойству

public DateTime Date { get; set; }
    public Window9()
    {
        InitializeComponent();
        Date = DateTime.Now;
        DataContext=this;
        txt.SetBinding(TextBlock.TextProperty, new Binding("Date"));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...