获取Value DataPicker和Radio Button

时间:2016-10-14 19:53:48

标签: c# wpf

我想创建advence搜索,但我有问题获得RadioButton值和DataPicker值。

这是我的Xml代码:

 <PersianDateControls:PersianDatePicker Name="DateEndPicker" HorizontalAlignment="Left" Margin="32,470,0,0" VerticalAlignment="Top" Width="115" Background="White" Height="25" Grid.Column="2"/>
   <PersianDateControls:PersianDatePicker Name="DateStartPicker" HorizontalAlignment="Left" Margin="32,418,0,0" VerticalAlignment="Top" Width="115" Background="White" Grid.Column="2"/>
    <RadioButton x:Name="Rad_Active" Content="Active" IsChecked="True" HorizontalAlignment="Left" Margin="407,433,0,0" VerticalAlignment="Top" Foreground="White" FontFamily="Iranian Sans"/>
    <RadioButton x:Name="Rad_DeActive" Content="DeActive" HorizontalAlignment="Left" Margin="272,433,0,0" VerticalAlignment="Top" Foreground="White" FontFamily="Iranian Sans"/>

我该如何解决这个问题?

private void btn_search_MouseDown(object sender, MouseButtonEventArgs e)
    {
        string Name = txt_Name.Text;
        string Family = txt_family.Text;

        var QSearch = db.Tbl_User.Where(u => u.Name == Name).Where(u => u.Family == Family).ToList();
        dataGrid.ItemsSource = QSearch;
    }

当我使用此代码进行compate to date时显示此错误

修改

当我使用RadioButton时显示此错误

bool Active;
if (Rad_Active.IsChecked) // Error 1 here
{
    Active = true;
}
else if (Rad_DeActive.IsChecked) // Error 1 here
{
    Active = false;
}

错误1

  

无法隐式转换类型“bool?” “bool”。

编辑2

DateTime Date = DateEndPicker.SelectedDate; // Error 2 here

错误2

  

无法将类型'Arash.PersianDate'隐式转换为'System.DateTime'

编辑3

PersianDate DateEnd = DateEndPicker.SelectedDate;
PersianDate DateStart = DateEndPicker.SelectedDate;

var QSearch = db.Tbl.User.Where(u => u.Name == Name)
    .Where(u => u.Family == Family)
    .Where(u => u.Active == Active)
    .Where(u => u.DateReg >= DateStart && u.DateReg <= DateEnd).ToList(); // Error 3 here
dataGrid.ItemsSource = QSearch

错误3

  

严重级代码描述项目文件行抑制状态   错误CS0019运算符'&gt; ='无法应用于'DateTime'和'PersianDate'类型的操作数AnbarDari F:\ MyProject \ AnbarDari \ AnbarDari \ Win_Users.xaml.cs 77活动

2 个答案:

答案 0 :(得分:1)

只需一个单选按钮即可。只需设置bool? Active = Rad_Active.IsChecked 这将根据该单个复选框的状态设置您的活动标记。

答案 1 :(得分:0)

由于IsChecked是一个可空的布尔,你不能只做一个直接演员。如果它为null则转换将失败。相反,你可以这样做:

if (Rad_Active.IsChecked == true)
{
    Active = true;
}

至于在PerisanDate和常规DateTime之间进行转换,会有一个返回常规DateTime的方法或属性,但不知道您正在使用哪个选择器很难给出一个明确的答案。 IDE应该能够通过自动完成或查看类的定义为您提供一些线索(在Visual Studio中,右键单击 - &gt;转到定义)