2013-03-02 2 views
2

Windows8에는 아직 DatePicker가 없으므로 몇 가지 예제를 따르기로 결정했습니다.Usercontrol 바인딩에서 값을 속성으로 전달

그 자체로는 정상적으로 작동하지만 이제는 DatePicker를 미리 채울 날짜가 있습니다.

은 내가 DatePicker.xaml.cs의 속성은 아래 파일을 생성 :

나는 속성에 바인딩하는 시도 DatePicker에서 제어를 표시 내 페이지에서 다음
public DateTime dateVal 
{ 
    get 
    { 
     return m_dateVal; 
    } 
    set 
    { 
     m_dateVal = value; 
    } 
} 

:

<dp:DatePicker Foreground="Black" Height="100" Margin="10,25" Grid.Column="1" VerticalAlignment="Center" BorderBrush="Black" BorderThickness="1" dateVal="{Binding repairInfoSingle.repairDate, Mode=TwoWay}"/> 

그러나 DatePicker.xaml.cs 파일을 실행하면 dateVal 속성에 전달 된 날짜가 절대로 채워지지 않았습니다.

WinRT 정보 : 부동산 'aG.Common.DatePicker.dateVal'에 할당 할 수 없습니다

은 그럼 출력 창에서 오류가 발생합니다. [라인 : 125 포지션 : 170]

그래서 다음 날짜를 통과 생성자 그때, 월 일 및 연도를 파싱하여 SelectedIndex 값을 설정할 수 기대되었다.

답변

4

속성에 바인딩하려는 경우 (예 : DateVal={Binding ...} 사용) - DateVal은 일반 CLR 속성 일 수 없습니다. 당신이 원하는 것처럼

지금
public DateTime DateVal 
{ 
    get { return (DateTime) GetValue(DateValProperty); } 
    set { SetValue(DateValProperty, value); } 
} 

public static readonly DependencyProperty DateValProperty = 
    DependencyProperty.Register("DateVal", typeof(DateTime), typeof(DatePicker), 
    new PropertyMetadata(DateTime.MinValue)); 

가 잘 작동합니다 :

<dp:DatePicker DateVal="{Binding repairInfoSingle.repairDate, Mode=TwoWay}"/> 
2

당신이 결합 할 경우
당신은 그래서 예에 DependencyProperty

로 변경해야 값을 dateVal으로 변경하려면 dateVal

DependancyProperty으로 만들어야합니다.
public DateTime DateVal 
    { 
     get { return (DateTime)GetValue(DateValProperty); } 
     set { SetValue(DateValProperty, value); } 
    } 

    public static readonly DependencyProperty DateValProperty = 
     DependencyProperty.Register("DateVal", typeof(DateTime), typeof(DatePicker), new PropertyMetadata(DateTime.MinValue)); 
관련 문제