WPF中的StringUpDown?

WPF中的StringUpDown?,wpf,wpf-controls,scrollbar,wpftoolkit,numericupdown,Wpf,Wpf Controls,Scrollbar,Wpftoolkit,Numericupdown,我有一个关于数字上下的问题: 我怎么能在一年中的12个月内做到这一点?我计划使用带有文本框的垂直滚动条。我想上下链接垂直滚动条,使用C#增加或减少文本框中的月份 有谁能告诉我如何才能做到这一点吗?你可以看一篇文章,这篇文章与datepicker类似 基本上,您需要一个月的属性,并且根据您的方法(代码隐藏/mvvm),处理向上/向下按钮上的单击事件,或键盘向下键事件来处理它们的逻辑(因此,在您的情况下,添加向上/向下按钮,并将它们连接到事件,适当地命名它们) 例如,在您的xaml上有以下内容

我有一个关于数字上下的问题:

我怎么能在一年中的12个月内做到这一点?我计划使用带有文本框的垂直滚动条。我想上下链接垂直滚动条,使用C#增加或减少文本框中的月份


有谁能告诉我如何才能做到这一点吗?

你可以看一篇文章,这篇文章与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;