WPF中DatePiker值绑定以及精简查询

1.WPF中DatePiker值绑定
Xaml中值绑定使用Text
<DatePicker Text="{Binding strMinDate,UpdateSourceTrigger=PropertyChanged, StringFormat=yyyy-MM-dd}" HorizontalAlignment="Left" Margin="69,2,0,0" VerticalAlignment="Top" Width="137" Height="30" FontSize="14" SelectedDateFormat="Long"/>
<DatePicker Text ="{Binding strMaxDate,UpdateSourceTrigger=PropertyChanged, StringFormat=yyyy-MM-dd}" HorizontalAlignment="Left" Margin="222,2,0,0" VerticalAlignment="Top" Width="134" Height="30" FontSize="14" SelectedDateFormat="Long"/>
 
在ViewModel中使用strMinDate 转为DateTime.如下:
public string strMinDate
{
get { return this.GetProperty<string>(() => strMinDate); }
set { this.SetProperty<string>(() => strMinDate, value);
MinDateTime = Convert.ToDateTime(value);
}
} public string strMaxDate
{
get { return this.GetProperty<string>(() => strMaxDate); }
set { this.SetProperty<string>(() => strMaxDate, value);
MaxDateTime = Convert.ToDateTime(value);
}
} private DateTime? _minDateTime;
/// <summary>
/// 起始时间
/// </summary>
public DateTime? MinDateTime
{
get { return _minDateTime; }
set
{
_minDateTime = value;
this.RaisePropertyChanged(() => MinDateTime);
}
}
private DateTime? _maxDateTime;
/// <summary>
/// 结束时间
/// </summary>
public DateTime? MaxDateTime
{
get { return _maxDateTime; }
set
{
_maxDateTime = value;
this.RaisePropertyChanged(() => MaxDateTime);
}
}
 
2. Linq精简查询
 
public void Search()
{
DateTime tMin = _minDateTime == null ? DateTime.MinValue : _minDateTime.Value.Date;
DateTime tMax = _maxDateTime == null ? DateTime.MaxValue : _maxDateTime.Value.Date.AddDays(1);
IQueryable<SampleResult> IResults = _databaseContext.SampleResults.Where(x => x.Sample.ArriveDateTime < tMax && x.Sample.ArriveDateTime >= tMin && x.Sample.Barcode.Contains(Barcode)).Include(p=>p.Sample).Include(p=>p.Sample.Test).Include(p=>p.Sample.Patient);
this.Results = new ObservableCollection<SampleResult>(IResults);
}
 
3. 原代码:
Xaml:
 1 <UserControl x:Class="EUROFluoAnalyzer.Result.Views.ResultListView"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6 xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
7 xmlns:ViewModels="clr-namespace:EUROFluoAnalyzer.Result.ViewModels"
8 mc:Ignorable="d"
9 DataContext="{dxmvvm:ViewModelSource Type=ViewModels:ResultListViewModel}" Height="725.373" Width="1020.746">
10 <Grid>
11 <Grid.RowDefinitions>
12 <RowDefinition Height="41"/>
13 <RowDefinition Height="45"/>
14 <RowDefinition/>
15 </Grid.RowDefinitions>
16
17 <Label Content="送检日期" HorizontalAlignment="Left" Margin="3,2,0,0" VerticalAlignment="Top" Height="22" Width="61" FontSize="14"/>
18 <DatePicker Text="{Binding strMinDate,UpdateSourceTrigger=PropertyChanged, StringFormat=yyyy-MM-dd}" HorizontalAlignment="Left" Margin="69,2,0,0" VerticalAlignment="Top" Width="137" Height="30" FontSize="14" SelectedDateFormat="Long"/>
19 <Label Content="-" HorizontalAlignment="Left" Margin="212,4,0,0" VerticalAlignment="Top" Height="22" Width="6" FontSize="14"/>
20 <DatePicker Text ="{Binding strMaxDate,UpdateSourceTrigger=PropertyChanged, StringFormat=yyyy-MM-dd}" HorizontalAlignment="Left" Margin="222,2,0,0" VerticalAlignment="Top" Width="134" Height="30" FontSize="14" SelectedDateFormat="Long"/>
21 <Label Content="样本编号" HorizontalAlignment="Left" Margin="376,4,0,0" VerticalAlignment="Top" Height="22" Width="61" FontSize="14"/>
22 <TextBox HorizontalAlignment="Left" Height="30" Margin="442,2,0,0" TextWrapping="Wrap" Text="{Binding Barcode}" VerticalAlignment="Top" Width="119" FontSize="14"/>
23 <Button Content="查询" Command="{Binding SearchCommand}" HorizontalAlignment="Left" Margin="576,2,0,0" VerticalAlignment="Top" Width="111" Height="32" FontSize="14"/>
24 <Grid Grid.Row="1">
25 <Button Content="详细" Command="{Binding DetailCommand}" HorizontalAlignment="Left" Margin="0,3,0,0" VerticalAlignment="Top" Width="111" Height="32" FontSize="14" />
26 </Grid>
27 <Grid Grid.Row="2">
28 <DataGrid ItemsSource="{Binding Results, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" Margin="0,5,0,0" IsReadOnly="True" AutoGenerateColumns="False" GridLinesVisibility="All"
29 x:Name="dataGrid"
30 SelectedItem="{Binding SelectedResult}" BorderThickness="1" HorizontalGridLinesBrush="#FFAAA5A5" VerticalGridLinesBrush="#FF9C9999" AlternatingRowBackground="#FFAEF1A7" FontSize="14">
31 <DataGrid.Columns>
32 <DataGridTemplateColumn Width="20">
33 <DataGridTemplateColumn.HeaderTemplate>
34 <DataTemplate>
35 <Grid>
36 <Border Height="18" Width="18" CornerRadius="2" Background="White" Padding="0" Margin="0" HorizontalAlignment="Center" VerticalAlignment="Center"/>
37 </Grid>
38
39 </DataTemplate>
40 </DataGridTemplateColumn.HeaderTemplate>
41 </DataGridTemplateColumn>
42 <DataGridTextColumn Header="样本编号" Width="100" Binding="{Binding Sample.Barcode}"/>
43 <DataGridTextColumn Header="样本架" Width="50" Binding="{Binding Sample.Rack}"/>
44 <DataGridTextColumn Header="管位" Width="50" Binding="{Binding Sample.Position}"/>
45 <DataGridTextColumn Header="检测项" Width="100" Binding="{Binding Sample.Test.LongName}"/>
46 <DataGridTextColumn Header="基质编号" Width="100" Binding="{Binding Order}"/>
47 <DataGridTextColumn Header="细胞核型" Width="100" Binding="{Binding CellType}"/>
48 <DataGridTextColumn Header="滴度" Width="100" Binding="{Binding Titer}"/>
49 <DataGridTextColumn Header="结果" Width="100" Binding="{Binding Result}"/>
50 <DataGridTextColumn Header="送检时间" Width="150" Binding="{Binding Sample.ArriveDateTime, StringFormat=yyyy-MM-dd HH:mm:ss}" />
51 </DataGrid.Columns>
52 </DataGrid>
53 </Grid>
54 </Grid>
55 </UserControl>
 ViewModel:

//------------------------------------------摘要------------------------------------------
// 产品名称:结果列表
// 文 件 名:ResultListViewModel
// 文件说明:
// 机器名称:EIBJDE0153
// 作  者:zhengping.pan
// 创建日期:2018-08-04 10:44:09
//---------------------------------------------------------------------------------------- using System;
using System.Linq;
using System.Data.Entity;
using DevExpress.Mvvm.DataAnnotations;
using DevExpress.Mvvm;
using System.Collections.ObjectModel;
using EUROFluoAnalyzer.Data.Table;
using EUROFluoAnalyzer.Data;
using EUROFluoAnalyzer.Result.Views; namespace EUROFluoAnalyzer.Result.ViewModels
{
[POCOViewModel]
public class ResultListViewModel : ViewModelBase
{
#region 属性
public string Barcode
{
get { return this.GetProperty<string>(() => Barcode); }
set { this.SetProperty<string>(() => Barcode, value); }
} public string strMinDate
{
get { return this.GetProperty<string>(() => strMinDate); }
set { this.SetProperty<string>(() => strMinDate, value);
MinDateTime = Convert.ToDateTime(value);
}
} public string strMaxDate
{
get { return this.GetProperty<string>(() => strMaxDate); }
set { this.SetProperty<string>(() => strMaxDate, value);
MaxDateTime = Convert.ToDateTime(value);
}
} private DateTime? _minDateTime;
/// <summary>
/// 起始时间
/// </summary>
public DateTime? MinDateTime
{
get { return _minDateTime; }
set
{
_minDateTime = value;
this.RaisePropertyChanged(() => MinDateTime);
}
}
private DateTime? _maxDateTime;
/// <summary>
/// 结束时间
/// </summary>
public DateTime? MaxDateTime
{
get { return _maxDateTime; }
set
{
_maxDateTime = value;
this.RaisePropertyChanged(() => MaxDateTime);
}
} public ObservableCollection<SampleResult> Results
{
get { return GetProperty(() => Results); }
set { SetProperty(() => Results, value); }
} public SampleResult SelectedResult
{
get { return this.GetProperty<SampleResult>(() => SelectedResult); }
set { this.SetProperty<SampleResult>(() => SelectedResult, value); }
} private EuroLabContext _databaseContext;
#endregion public ResultListViewModel()
{
Barcode = string.Empty;
strMaxDate = DateTime.Now.Date.ToString("yyyy-MM-dd");
strMinDate = new DateTime(DateTime.Now.Year,1,1).ToString("yyyy-MM-dd");
this._databaseContext = new EuroLabContext();
} public void Search()
{
DateTime tMin = _minDateTime == null ? DateTime.MinValue : _minDateTime.Value.Date;
DateTime tMax = _maxDateTime == null ? DateTime.MaxValue : _maxDateTime.Value.Date.AddDays(1);
IQueryable<SampleResult> IResults = _databaseContext.SampleResults.Where(x => x.Sample.ArriveDateTime < tMax && x.Sample.ArriveDateTime >= tMin && x.Sample.Barcode.Contains(Barcode)).Include(p=>p.Sample).Include(p=>p.Sample.Test).Include(p=>p.Sample.Patient);
this.Results = new ObservableCollection<SampleResult>(IResults);
} public void Detail()
{
if (this.SelectedResult != null)
{
IQueryable<SampleResult> IResults = _databaseContext.SampleResults.Where(x => x.Sample_ID == SelectedResult.Sample.ID && x.Sample.Protocol_ID == SelectedResult.Sample.Protocol_ID).Include(p => p.Sample).Include(p => p.Sample.Test).Include(p => p.Sample.Patient);
ResultDetailView detailWindow = new ResultDetailView();
(detailWindow.DataContext as ResultDetailViewModel).SelectedResult = this.SelectedResult;
(detailWindow.DataContext as ResultDetailViewModel).Results = new ObservableCollection<SampleResult>(IResults);
detailWindow.ShowDialog();
}
} }
}

WPF中DatePiker值绑定以及精简查询的更多相关文章

  1. WPF中,如何将绑定源设置到单件实例

    原文:WPF中,如何将绑定源设置到单件实例  WPF中,如何将绑定源设置到单件实例                                       周银辉 大概两个月前,曾有位朋友问我:如 ...

  2. 总结:WPF中模板需要绑定父级别的ViewModel该如何处理

    原文:总结:WPF中模板需要绑定父级别的ViewModel该如何处理 <ListBox ItemsSource="{Binding ClassCollection}"> ...

  3. 正确处理WPF中Slider值改变事件的方式

    最近在用WPF数据绑定重写一下播放器项目时遇到的关于Slider的问题,在窗体透明度调节和播放进度调节上用了Slider控件.调节窗体透明度我是 这么想的:将窗体的Opacity属性的值与Slider ...

  4. WPF实现多值绑定特性以及多值转换

    WPF中的实现 我们首先来看一下常规的绑定 <Window    x:Class="WpfApplicationSample.MainWindow"    xmlns=&qu ...

  5. WPF中ListBox的绑定

    WPF中列表式控件派生自ItemsControl类,继承了ItemsSource属性.ItemsSource属性可以接收一个IEnumerable接口派生类的实例作为自己的值(所有可被迭代遍历的集合都 ...

  6. wpf中的datagrid绑定操作按钮是否显示或者隐藏

    如图,需要在wpf中的datagrid的操作那列有个确认按钮,然后在某些条件下确认按钮可见,某些情况下不可见的,放在mvc里直接在cshtml页面中if..else就行了. 但是在wpf里不行..网上 ...

  7. WPF中使用ObjectDataProvider绑定方法

    ObjectDataProvider提供了绑定任意.net类型的功能,具体功能如下: 1.ObjectDataProvider提供了绑定任意CLR类型的公嫩那个. 2.它可以再XAML中利用生命史的语 ...

  8. wpf 中的DataTemplate 绑定控件

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...

  9. 【WPF】WPF中的List<T>和ObservableCollection<T>

    在WPF中 控件绑定数据源时,数据源建议采用 ObservableCollection<T>集合 ObservableCollection<T> 类:表示一个动态数据集合,在添 ...

随机推荐

  1. 用seaborn绘制散点图

    散点图可以显示观察数据的分布,描述数据的相关性,matlibplot也可以绘制散点图,不过我一般优先使用seaborn库的sctterplot()绘制,下面就介绍一下如何用seaborn.scatte ...

  2. day002|python基础回顾2

    目录 00 上节课复习 01 基本数据类型 02 与用户交互 03 运算符 04 流程运算之if判断 05 流程判断之while循环 06 TEST 00 上节课复习 ""&quo ...

  3. cnblog markdown 模式下调整图片大小

    流程 上传图片,获得图片链接,例如 ![](https://img2020.cnblogs.com/blog/2163507/202010/2163507-20201030205035211-7968 ...

  4. Cpython的全局解释器锁(GIL)

    # Cpyrhon解释器下有个全局解释器锁-GIL:在同一 # 在同一时刻,多线程中只有一个线程访问CPU # 有了全局解释器锁(GIL)后,在同一时刻只能有一个线程访问CPU. # 全局解释器锁锁的 ...

  5. RedisUtils工具类

    package test.util; import org.springframework.beans.factory.annotation.Autowired; import org.springf ...

  6. Single Depth peeling 顺序无关渲染(OIT)

    什么是顺序无关渲染 在3D渲染中,物体的渲染是按一定的顺序渲染的,这也就可能导致半透明的物体先于不透明的物体渲染,结果就是可能出现半透明物体后的物体由于深度遮挡而没有渲染出来.对于这种情况通常会先渲染 ...

  7. NAT基本原理及应用

    参考链接 https://blog.csdn.net/u013597671/article/details/74275852

  8. Mac垃圾忘记清理?开启自动清理提醒帮助你!

    Mac系统被广泛应用于各种职场生活和学习生活上,平时由于工作和学习忙碌,用户难免会忽略了对Mac的照料,Mac在日复一日地使用中,必定会逐渐变得"臃肿",系统中存在着各种文件缓存垃 ...

  9. 精尽MyBatis源码分析 - SQL执行过程(四)之延迟加载

    该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...

  10. Codeforces Round #670 (Div. 2) D. Three Sequences 题解(差分+思维+构造)

    题目链接 题目大意 给你一个长为n的数组a,要你构造一个非严格单调上升的数组b和一个非严格单调下降的数组c,使得\(b_i+c_i=a_i\) 要你使这两个数组b,c中最大的元素最小,还有q次修改(q ...