我正在创建自己的日历月视图控件。我刚刚开始,我有后退和前进按钮(浏览月份)和一个文本块来显示当前月份。
<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
属性绑定到某个东西,但我不知道是什么。此外,当我点击BackMonthButton
或ForwardMonthButton
时,我希望DateTextBlock
显示相应的月份和年份。你能帮助我吗?谢谢。
答案 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月份控件,您会发现许多可以使用或模仿的控件。