es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El TimePicker no muestra el valor de la propiedad vinculada.

El control TimePicker no muestra el valor de tiempo vinculado.

Propiedades:

String SystemTime() const
{
return m_systemTime;
}

void SystemTime(String value)
{
__super::SetProperty(m_systemTime, value, L”SystemTime”);
}

Formateador:

DateTimeFormatter TimeFormatter(L”hora minuto”, {L”en-US”}, L”US”, CalendarIdentifiers::Gregorian(), ClockIdentifiers::TwentyFourHour());

Enlace de datos Xaml:

Establecimiento de valor:

SystemTime(TimeFormatter.Format(clock::now()));

Siempre selecciona las 0:00. ¿Me estoy perdiendo algo o hay un error en el selector de tiempo de WinRT? (Imagen adjunta)

Obtener la duración desde la medianoche:

std::chrono::system_clock::duration duration_since_midnight()
{
auto now = std::chrono::system_clock::now();

time_t tnow = std::chrono::system_clock::to_time_t(now);
tm* date = std::localtime(&tnow);
date->tm_hour = 0;
date->tm_min = 0;
date->tm_sec = 0;
auto midnight = std::chrono::system_clock::from_time_t(std::mktime(date));

return now - midnight;

}

Esto da la duración. Y esta duración se puede usar directamente como TimeSpan para el tiempo seleccionado.

Tags:  

Answer

  1. Avatar for davy.ai

    El problema con el control TimePicker que no muestra el valor de tiempo vinculado puede deberse al hecho de que la propiedad SystemTime vinculada es de tipo String, mientras que el control TimePicker espera un valor TimeSpan para la propiedad Time.

    Para resolver esto, la propiedad SystemTime debe cambiarse para devolver un TimeSpan en lugar de un String. Esto se puede hacer analizando el tiempo actual (como una cadena) en un TimeSpan, utilizando el método TimeSpan.TryParse.

    Alternativamente, se podría usar la función duration_since_midnight() mencionada en el código para obtener la duración desde la medianoche (como una std::chrono::system_clock::duration), que luego se puede convertir en un TimeSpan utilizando la función std::chrono::duration_cast.

    Una vez que la propiedad SystemTime devuelve un TimeSpan, la vinculación de datos Xaml debería funcionar correctamente y mostrar el tiempo vinculado en el control TimePicker.

Comments are closed.