你可以看看这篇用日期选择器做类似事情的文章。
基本上,您将希望拥有该月的属性,并根据您的方法(背后的代码/ mvvm),处理向上/向下按钮上的单击事件,或处理它们逻辑的键盘 keydown 事件(因此在您的情况下,添加向上/向下按钮,并将它们连接到事件,并适当地命名它们)。
例如,在你的 xaml 上有这个:
<DatePicker ... PreviewKeyDown="PreviewKeyDown_EventHandler" ... />
在你的代码后面是这样的:
private void PreviewKeyDown_EventHandler(object sender, System.Windows.Input.KeyEventArgs e)
{
// Avoid them nasty exceptions is the user hits "up" or "down" with no date selected:
if (sender == null || ((DatePicker)sender).SelectedDate == null)
return;
// Do this on up
if (e.Key == Key.Up)
{
((DatePicker)sender).SelectedDate =
((DatePicker)sender).SelectedDate.GetValueOrDefault().AddMonths(1);
}
// And this on down
if (e.Key == Key.Down)
{
((DatePicker)sender).SelectedDate =
((DatePicker)sender).SelectedDate.GetValueOrDefault().AddMonths(-1);
}
}
该示例使用日期时间作为属性,但如果您想要这样做,您可以使用 int 执行类似的操作。
(再次,如果您愿意,请查看链接以获取更多选项、示例和代码示例)
编辑:
这不像文章的示例那样具有向上/向下键的好处,但这有效:
<ScrollBar x:Name="scbm"
SmallChange="1" Maximum="12" Minimum="1"
Value="{Binding MonthScrollBar}"
HorizontalAlignment="Left" Height="26" Margin="230,195,0,0"
VerticalAlignment="Top" RenderTransformOrigin="0.542,0.83" />
<TextBox x:Name="txtm"
Text="{Binding MonthScrollBar}"
HorizontalAlignment="Left" Height="23" Margin="139,195,0,0"
TextWrapping="Wrap" VerticalAlignment="Top" Width="66" />
在我的 ViewModel 上(或者你的代码隐藏,如果你愿意,做类似的事情)
public int MonthScrollBar
{
get { return _monthScrollBar; }
set { _monthScrollBar = value;
RaisePropertyChanged("MonthScrollBar");}
}
private int _monthScrollBar;
并将属性值设置为您想要的构造函数。
请注意,我正在使用 MVVM,绑定到具有通知更改的属性(因此更改正在传播到视图),并对其进行初始化。ScrollBar 和 TextBox 都绑定到同一个MonthScrollBar
属性)如果你在做后面的代码,你可以直接从后面的代码中访问它。