【问题标题】:How to implement an input of time (or dates with times) ranges dynamically?如何动态实现时间(或带时间的日期)范围的输入?
【发布时间】:2013-03-22 05:22:19
【问题描述】:

我想通过动态添加时间范围来增强我的 C# .NET 4.0 多线程 WPF 应用程序(BeginTime+EndTime 对每个,多个,范围)。
而用户输入的倍数(从0到N)时间范围应该是:

  • 显示,即呈现给用户(我的想法是关于一个或两个相互依赖的列表框)
  • CRUD-ed(创建-读取-更新-删除)

我查看了 3d 方广告 TimePickers 或 DataTimePickers,创建了自己的自定义和用户控件来实现 TimePickerDateTimePicker 控件...但仍然无法决定如何更好地进行用它。

更好地使用它 - custom controluser control 以及在哪个组合/组合中(哪个控制另一个组合 - ListBox、ListView 等)? 哪个基础集合,模型?

如果有任何关于如何实现它的建议,我将不胜感激

更新:
如果这有助于理解...
我有一个在证券交易所交易的 WPF 应用程序,但用户应该能够选择可自定义的多个时间段进行实时和仿真(显示买卖订单但不发送到证券交易所)交易。好吧,这有点复杂,因为在不同的时间段内使用了不同的算法,但问题是我想给用户输入可配置时间段的可能性。

这一段时间,现在是通过硬编码完成的,无需任何用户交互。

【问题讨论】:

  • 能否展示控件的粗略草图/图像,这将有助于更好地理解问题
  • @Amitd,这是我的问题:如何实现时间值的动态添加,这些时间值将被显示、更新(删除-删除-添加-更改)。它的一部分是使用哪些控件,和/或如何组合它们
  • 我总是喜欢玩得开心。
  • 做一个例子,画一个草图,任何能让你更清楚你所追求的东西,因为你的文字真的很难理解......

标签: c# wpf data-binding collections .net-4.0


【解决方案1】:

您可以使用 Extended WPF Toolkit™ 中的 DateTimePicker 和/或 DateTimeUpDownhttp://wpftoolkit.codeplex.com/.

对于时间范围,请使用 Jani Giannoudis 的 .NET 时间周期库: http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET

编辑:

对于 UI 安排,您可以使用绑定到 ObservableCollection<TimePeriod>ListBox

<ListBox Name="listBox">
    <ListBox.ItemTemplate >
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <xctk:DateTimePicker Value="{Binding Start}" Format="ShortTime" />
                <xctk:DateTimePicker Value="{Binding End}" Format="ShortTime" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

public class TimePeriod
{
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
}

void Window_Loaded(object sender, RoutedEventArgs e)
{
    ObservableCollection<TimePeriod> collection = new ObservableCollection<TimePeriod>();
    collection.Add(new TimePeriod {Start = DateTime.Now - TimeSpan.FromHours(5), End = DateTime.Now});
    collection.Add(new TimePeriod {Start = DateTime.Now, End = DateTime.Now + TimeSpan.FromHours(5)});
    listBox.ItemsSource = collection;
}

【讨论】:

  • 感谢时间段库。我没看见它。虽然问题更多的是如何在 WPF 中安排 GUI
  • @Fulproof 我添加了一个如何实现时间段列表框的示例。
猜你喜欢
  • 1970-01-01
  • 2018-03-07
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-03
  • 1970-01-01
  • 2019-11-17
相关资源
最近更新 更多