2011-11-08 4 views
0

있다 그냥 Calendar 컨트롤 :WPF 달력 컨트롤은 바인딩 경고

<Window x:Class="MenuBindingTest.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Calendar/> 
</Window> 

그리고 그냥이, ​​나는 다음과 같은 바인딩 오류를 얻을 실행

(x2) System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=DisplayMode; DataItem=null; target element is 'CalendarItem' (Name='PART_CalendarItem'); target property is 'NoTarget' (type 'Object') 
(x7) System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:(no path); DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String') 

왜 이런가요?

+0

글쎄, "그냥"일정표는 무의미합니다 ... 그 값을 ViewModel에 바인딩하십시오. –

답변

1

Calendar 개체를 닫지 않았습니다.

는 당신이있어 :

<Calendar> 

당신이 필요합니다 : 잘 컴파일

<Calendar /> 

합니다. 이는 시스템에서 다른 작업이 진행 중임을 나타냅니다. 이 코드가 실패한 것은 100 %입니까?

+0

그래, 내 부분에 게시 실수. 나는 질문 텍스트를 업데이트했다. – Eric

0

Expression Blend를 사용하여 템플릿을 추출했습니다. 가이드로 템플릿을 사용하여, 나는 바인딩 오류가 발생하는 곳이 발견

 <ControlTemplate> 
     <ControlTemplate.Resources> 
      <DataTemplate x:Key="{x:Static CalendarItem.DayTitleTemplateResourceKey}"> 
      <TextBlock ... 
         Text="{Binding}" 
         .../> 
      </DataTemplate> 
     </ControlTemplate.Resources> 
     </ControlTemplate> 

로 변경을 :

  <TextBlock ... 
         Text="{Binding FallbackValue=''}" 
         .../> 

그리고 바인딩 오류가 멀리 이동합니다.

+0

이것은 현재 저에게 좋습니다. 그러나 단점은 이제 전체 템플릿을 (복사본으로) 내 코드에 추출해야한다는 것입니다. 세상 끝은 아니지만 누군가가 * FallbackValue = ''*를 전체 템플릿에서 끌어 당기는 바인딩에 추가하는 방법을 알고 있는지 알고 싶습니다. – Eric