WPF中的StringUpDown?
我有一个关于数字上下的问题: 我怎么能在一年中的12个月内做到这一点?我计划使用带有文本框的垂直滚动条。我想上下链接垂直滚动条,使用C#增加或减少文本框中的月份WPF中的StringUpDown?,wpf,wpf-controls,scrollbar,wpftoolkit,numericupdown,Wpf,Wpf Controls,Scrollbar,Wpftoolkit,Numericupdown,我有一个关于数字上下的问题: 我怎么能在一年中的12个月内做到这一点?我计划使用带有文本框的垂直滚动条。我想上下链接垂直滚动条,使用C#增加或减少文本框中的月份 有谁能告诉我如何才能做到这一点吗?你可以看一篇文章,这篇文章与datepicker类似 基本上,您需要一个月的属性,并且根据您的方法(代码隐藏/mvvm),处理向上/向下按钮上的单击事件,或键盘向下键事件来处理它们的逻辑(因此,在您的情况下,添加向上/向下按钮,并将它们连接到事件,适当地命名它们) 例如,在您的xaml上有以下内容
有谁能告诉我如何才能做到这一点吗?你可以看一篇文章,这篇文章与datepicker类似
基本上,您需要一个月的属性,并且根据您的方法(代码隐藏/mvvm),处理向上/向下按钮上的单击事件,或键盘向下键事件来处理它们的逻辑(因此,在您的情况下,添加向上/向下按钮,并将它们连接到事件,适当地命名它们)
例如,在您的xaml上有以下内容:
<DatePicker ... PreviewKeyDown="PreviewKeyDown_EventHandler" ... />
该示例使用datetime作为属性,但如果您需要int,则可以使用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" />
并将属性值设置为构造函数上所需的任何值
请注意,我正在使用MVVM,绑定到具有通知更改的属性(因此更改将传播到视图),并对其进行初始化。
滚动条和文本框都绑定到相同的MonthScrollBar
属性)
如果您正在执行代码隐藏,您可以直接从代码隐藏中访问它。我只需要几个月,就像下面的链接一样:如果您绑定到日期时间,请添加或减去一个月。如果要绑定到数字,请在属性中添加或减去1。您已经获得了所需的所有信息…Datepicker正在显示完整的日期:mm/dd/yyyy..但我想向用户显示月份字符串。显然,它来自给定的示例。您可以使用
文本框
,也可以使用日期格式。(我建议你使用一个文本框,并在那里有一个int,只要确保在你的逻辑中,当你点击时从12到1)你的意思是将文本框与滚动条一起使用???我的问题是如何将滚动条上下点击链接,以增加和减少文本框中的月份?既然你在这里找到了问题的答案,请删除你的其他问题-
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);
}
}
<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" />
public int MonthScrollBar
{
get { return _monthScrollBar; }
set { _monthScrollBar = value;
RaisePropertyChanged("MonthScrollBar");}
}
private int _monthScrollBar;