TextBlock неизменный, TextBox (содержимое) невидимым.Почему / какой метод предпочтительнее? - PullRequest
0 голосов
/ 10 февраля 2012

Я использовал следующий код, чтобы отобразить текущую дату / время (время создания экземпляра .exe), то есть меньше одного дня в первых средствах выбора даты и TextBlock, а затем текущую дату / время в следующих средствах выбора даты и TextBlock:

XAML:

<StackPanel Orientation="Horizontal" >
    <Label>Between</Label>
    <DatePicker Name="dtpFrom" ></DatePicker>
    <TextBlock Name="timeFrom" MinWidth="60" Text="{Binding Date, StringFormat={}{hh:mm: tt}}" />
    <Label>and</Label>
    <DatePicker Name="dtpTo"></DatePicker>
    <TextBlock Name="timeTo"
               MinWidth="60"
               Text="{Binding Date, StringFormat={}{hh:mm: tt}}" />
</StackPanel>

C #:

int dtHour = DateTime.Now.Hour;
int dtMinute = DateTime.Now.Minute;
int dtSecond = DateTime.Now.Second;

dtpFrom.SelectedDate = DateTime.Now.AddDays(-1);
timeFrom.Text = String.Format("{0}:{1}:{2}", dtHour, dtMinute, dtSecond);
timeTo.Text = String.Format("{0}:{1}:{2}", dtHour, dtMinute, dtSecond);
dtpTo.SelectedDate = DateTime.Now;

Отображает точное время в TextBlocks; но это не редактируется. Поэтому я изменил TextBlocks на TextBoxes. Теперь значения времени не отображаются вообще ...

~~~~~~~~~~~~~~~~~~~~~~ Изменено:

Я исправил это (хотя, несомненно, немного клудгилы) с этим кодом:

    int dtHour = DateTime.Now.Hour;
    int dtMinute = DateTime.Now.Minute;
    int dtSecond = DateTime.Now.Second;
    string strHour = string.Empty;
    string strMinute = string.Empty;
    string strSecond = string.Empty;

    if (dtHour < 10)
    {
        strHour = string.Format("0{0}", dtHour.ToString());
    }
    else
    {
        strHour = dtHour.ToString();
    }

    if (dtMinute < 10)
    {
        strMinute = string.Format("0{0}", dtMinute.ToString());
    }
    else
    {
        strMinute = dtMinute.ToString();
    }

    if (dtSecond < 10)
    {
        strSecond = string.Format("0{0}", dtSecond.ToString());
    }
    else
    {
        strSecond = dtSecond.ToString();
    }

    dtpFrom.SelectedDate = DateTime.Now.AddDays(-1);
    timeFrom.Text = String.Format("{0}:{1}:{2}", strHour, strMinute, strSecond);
    timeTo.Text = timeFrom.Text;  //String.Format("{0}:{1}:{2}", strHour, strMinute, strSecond);
    dtpTo.SelectedDate = DateTime.Now;

... и этот xaml (пришлось убрать форматирование "модных штанов"):

<StackPanel Orientation="Horizontal" >
    <Label>Between</Label>
    <DatePicker Name="dtpFrom" ></DatePicker>
    <TextBox Name="timeFrom" MinWidth="60" />
    <Label>and</Label>
    <DatePicker Name="dtpTo"></DatePicker>
    <TextBox Name="timeTo"
               MinWidth="60" />
</StackPanel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...