0

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

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

我浏览了 3d 方广告TimePickerDataTimePicker创建了我自己的自定义和用户控件来实现TimePickerDateTimePicker控制……但仍然无法决定如何更好地进行。

使用什么会更好- acustom control或 auser control以及在哪个组合/组合中(哪个控制在哪个组合内 - ListBox、ListView 等)?哪个基础集合,模型?

我将不胜感激有关如何实施它的任何建议

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

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

4

1 回答 1

2

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

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

编辑:

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

<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;
}
于 2013-03-26T09:46:52.110 回答