WPF:如何将当前日期绑定到TextBlock?

时间:2011-03-23 14:27:57

标签: wpf wpf-controls binding

我正在创建自己的日历月视图控件。我刚刚开始,我有后退和前进按钮(浏览月份)和一个文本块来显示当前月份。

<UserControl
    x:Class="MonthView.Controls.MonthViewControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    mc:Ignorable="d" 
    d:DesignHeight="300" 
    d:DesignWidth="450">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="50" />
      <RowDefinition Height="20"/>
      <RowDefinition />
    </Grid.RowDefinitions>

    <StackPanel 
        Grid.Row="0" 
        Orientation="Horizontal" 
        Margin="20,0" 
        HorizontalAlignment="Left" 
        VerticalAlignment="Center">
      <Button 
          Name="BackMonthButton" 
          Width="30" 
          Height="23" 
          Margin="0,0,7,0" 
          FontFamily="Arial" 
          FontSize="14" 
          Content="◄" />
      <Button 
          Name="ForwardMonthButton" 
          Width="30" 
          Height="23" 
          Margin="7,0,20,0" 
          FontFamily="Arial" 
          FontSize="14" 
          Content="►" />
      <TextBlock 
          Name="DateTextBlock" 
          HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          FontFamily="Gulim" 
          FontSize="26" 
          Text="March 2011" />
    </StackPanel>

  </Grid>

</UserControl>

我已经陷入困境,因为我之前从未在WPF中创建控件。我希望DateTextBlock显示当前的月份和年份。我知道我应该将Text属性绑定到某个东西,但我不知道是什么。此外,当我点击BackMonthButtonForwardMonthButton时,我希望DateTextBlock显示相应的月份和年份。你能帮助我吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以通过转换器将Text属性绑定到Date属性:

<TextBlock Text={Binding DateProperty, Converter={StaticResource DateConverter}"/>

DateConverter编码将DateTime对象转换为所需格式的文本字符串的规则,以及(可选)解析字符串以转换为DateTime的反向操作然后可以在你的申请中使用。

请参阅this tutorial了解完整内容。

答案 1 :(得分:0)

最好的方法是创建自定义MonthCalendar控件。请注意,自定义控件与用户控件非常不同,因为它们看起来很简洁。 Here是Microsoft定义自定义控件的起点。

对于自定义控件,您可以定义日历逻辑以及导航到上个月和下个月的命令,并且只读取依赖项属性以使月/年文本可用。所有这些都将在源自Control(或Control衍生物)的类中的代码文件中。

然后,您将定义控件模板以显示自定义控件。此模板将按​​钮连接(绑定)到下一个和上一个按钮,并且文本块将绑定到只读依赖项属性。

如果您想制作自定义控件,我强烈建议您阅读this book

与此同时,在Google上搜索WPF月份控件,您会发现许多可以使用或模仿的控件。