поле со списком создает и открывает элемент Datepicker, и выбранная дата автоматически вводится в значение текстового поля перед - PullRequest
0 голосов
/ 04 мая 2020

Этот дизайн находится внутри страницы транзакции! если пользователь хочет выполнить поиск транзакции по ее дате, щелкает на поле со списком «по дате», затем появляется элемент datepicker, пользователь выбирает / выбирает дату из средства выбора даты, а затем выбранная дата отображается в виде строки в текстовом поле.

У меня есть выпадающий список со следующими элементами.

<ComboBox Width="105" 
          SelectedIndex="0">
     <ComboBoxItem Name="TrSearchByName"
                   Content="by First Name"/>
     <ComboBoxItem Name="TrSearchByLastName"
                   Content="by Last Name"/>
     <ComboBoxItem Name="TrSearchByAmount"
                   Content="by Amount"/>
     <ComboBoxItem Name="TrSearchByDate"
                   Content="by Date"
                   Selected="PickDateUp"/>
</ComboBox>

и один элемент Textbox (ByDate) перед ним. Если выбран комбинированный список (по дате), появляются элементы выбора даты, и пользователь выбирает дату вверх, тогда выбранная дата автоматически становится значением элемента Textbox (ByDate). Код обработчика события C#:

private void PickDateUp(object sender, RoutedEventArgs e)
   {
       DatePicker choose = new DatePicker();
      //here wanna work further!
   }

, пожалуйста, помогите!

1 Ответ

0 голосов
/ 04 мая 2020

Может быть, это может помочь. MainWindow.cs

using System;
using System.Windows;
using System.Windows.Controls;

namespace Test
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public string SearchValue { get; set; }
        public SearchParameter SelectedParameter { get; set; }

        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }

        private void DoSearch(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(SearchValue) ||
                TrSearchBy.SelectedIndex < 0 ||
                TrSearchBy.SelectedIndex > TrSearchBy.Items.Count -1)
                return;

            if (SelectedParameter.Value == "Date")
            {
                //Search by date
                DateTime date = DateTime.Parse(SearchValue);
            }
            else
            {
                //Search by others
            }
        }
    }

    public class SearchParameter
    {
        public string Value { get; set; }

        public Control Content { get; set; }
    }
}

MainWindow.xaml

<Window x:Class="Test.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:Test" 
    mc:Ignorable="d"
    Title="MainWindow" Height="186" Width="345">
<StackPanel>
    <StackPanel.Resources>
        <TextBox x:Key="TextBoxValue" Text="{Binding SearchValue, UpdateSourceTrigger=PropertyChanged, Mode=OneWayToSource}"/>
        <DatePicker x:Key="DatePickerValue" Text="{Binding SearchValue, UpdateSourceTrigger=PropertyChanged, Mode=OneWayToSource}"/>

        <DataTemplate x:Key="ValuePresenter">
            <TextBlock Text="{Binding Value}"/>
        </DataTemplate>

        <x:Array x:Key="SearchParameters" Type="{x:Type local:SearchParameter}">
            <local:SearchParameter Value="First name" Content="{StaticResource TextBoxValue}"/>
            <local:SearchParameter Value="Last name" Content="{StaticResource TextBoxValue}"/>
            <local:SearchParameter Value="Amount" Content="{StaticResource TextBoxValue}"/>
            <local:SearchParameter Value="Date" Content="{StaticResource DatePickerValue}"/>
        </x:Array>
    </StackPanel.Resources>

    <TextBlock Text="Search By"/>
    <ComboBox Name="TrSearchBy" SelectedIndex="0"
              SelectedItem="{Binding SelectedParameter, UpdateSourceTrigger=PropertyChanged, Mode=OneWayToSource}"
              ItemsSource="{DynamicResource SearchParameters}" ItemTemplate="{StaticResource ValuePresenter}"/>

    <TextBlock Text="{Binding SelectedItem.Value, ElementName=TrSearchBy}" />
    <ContentControl Content="{Binding SelectedItem.Content, ElementName=TrSearchBy}" />
    <Button Content="Search" Click="DoSearch" />
</StackPanel>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...