2014-02-26 4 views
1

DateTime 소요 컨트롤의 DependencyProperty에 문자열을 전달하면 허용하지 않는 것 :날짜 시간 XAML WinRT

Cannot assign text value '00:00:00' into property 'StartTime' of type 'DateTime'

그냥 내가 아니면이 가능하지 않겠습니까? 내가 생각하는 해결 방법은 문자열을 DateTime 객체로 변환하는 IValueConverter를 제공하는 것입니다. 스케줄러/캘린더 컨트롤과 마찬가지로 이것은 약간 성가신 일입니다.

약간의 빛을 발산합니까?

+0

'DateTime time = "00:00:00";'is invalid :'암시 적으로 'string'유형을 'System.DateTime'으로 변환 할 수 없습니다. 그래서 그것은 적어도 완벽하게 이해가됩니다. –

+0

Jap은 완벽한 의미를 갖습니다. 'DateTime time = Covert.ToDateTime ("00:00:00");은 코드에서 변환 문제를 도울 것이고, 오늘 날짜는 있지만 지정 시간처럼 초기화 된 객체를 제공합니다. 바인딩을 사용하려면 값 변환기가 필요합니다. –

+0

날짜 부분이 초기화되지 않은'DateTime'을 기다리고있었습니다.이 종류의 것은 WPF에서 작동합니다. 반면 WinRT는 컴파일을 거부합니다. 필자는 문자열에 바인딩하는 경우 변환기가 필요합니다 (그럴만 한 이유가 있음을 알 수있는 것은 아닙니다) 누락 된 것으로 보이는 것은 WinRT의 'DateTime'유형에 대한 'TypeConverter/Attribute'입니다. – rtlayzell

답변

1

TypeConverter은 WinRT에서 사용할 수 없으며 플랫폼에 많은 UI 유형에 대해 일부 기본 변환이있는 것 같습니다.이 암시 적 변환은 이러한 변환 중 하나가 아닙니다. 그래도 몇 가지 옵션이 있습니다. 당신이 언급 한 바와 같이

  1. - 당신은 당신은 당신의 DateTime 속성이 DateTime보기 모델 속성에 바인딩되어 있는지 확인 할 수있는 값으로 변환
  2. 를 사용할 수 있습니다.
  3. 속성을 String 유형으로 정의하고 일반적으로 XAML 문자열로 해당 속성을 초기화하는 경우 컨트롤 내부에서 변환을 수행하십시오. 또한 속성 이름에 'String'을 추가하여 문자열이라는 것을 분명히 할만한 가치가 있습니다. 'StartDateString'.
  4. 컨트롤을 모두 DateTimeString 유형으로 사용하려면 두 유형의 속성을 모두 가지고 내부적으로 동기화해야 속성 변경 핸들러에서 재진입을 방지 할 수 있습니다.
  5. 유형 Object으로 속성을 선언하고 설정되는 값이 String 또는 다른 유형 (DateTimeOffset, TimeSpan, ...?) 변환, 직접 DateTime 값을 설정하거나 지원되지 않는 값을 던질 중 어떤 유형 감지합니다.

불행히도 Windows 플랫폼 팀이 TypeConverter 속성에 대한 지원을 추가 할 때까지는 멋진 해결책이 없습니다.