Вы можете статически определить текущий год в XAML следующим образом:
<Window.Resources>
<s:DateTime x:Key="CurrentYear">2020</s:DateTime>
</Window.Resources>
, где "s:" определяется как System (показано ниже), предоставляя вам доступ к объектам в пространство имен системы.
xmlns:s="clr-namespace:System;assembly=mscorlib"
ОДНАКО: Вы не должны делать это по нескольким причинам. Основным является то, что, насколько мне известно, вы не можете динамически получить текущий год, используя что-то вроде DateTime.Now в Window.Resources, потому что значение, хранящееся там, где «2020» находится в приведенном выше примере, должно быть строка. Это потребует ручного обновления каждый год, и т. Д. c.
Что вы должны сделать, это связать свойство Text TextBox со свойством в ViewModel или установить его в коде, если вы не используете модели представления в этом Проект еще. Это может быть достигнуто путем создания привязываемого свойства в модели представления, подобной этой
ViewModel
public string CurrentYear { get; set; }
public MainViewModel()
{
// This could be set anywhere, but setting in the constructor like this works well for a default value.
CurrentYear = DateTime.Now.Year.ToString();
}
Представление (xaml)
<!-- TwoWay Binding because the text can be updated by the user in the view, and it could be updated by the ViewModel -->
<TextBox Text="{Binding CurrentYear,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
В качестве альтернативы, вы могли бы сделать это в коде, подобном этому
View.xaml
<TextBox x:Name="currentYearTextBox" />
View.xaml.cs (code-behind)
public MainWindow()
{
InitializeComponent();
currentYearTextBox.Text = DateTime.Now.Year.ToString();
}
Заключительные мысли: Если вы хотите отображать текущий год, только когда выбран «текущий», вы просто обновите значение CurrentYear
на основе значения RadioButtons, et c. Это будет сделано в ViewModel или программном обеспечении в зависимости от архитектуры вашего приложения.