내 Windows Phone 앱에서 데이터 바인딩을 구현했는데 기대 한 결과가 나오지 않았습니다.데이터 바인딩이 예상 결과를 제공하지 않음 전화
내 기능은 데이터 바인딩 된 두 개의 텍스트 상자가있는 목록 상자입니다. 텍스트 상자를 클릭하면 datepicker/timepicker가 열리고 선택한 값이 텍스트 상자에 반영됩니다. "필드"로
private void LaunchDatePicker(TFDetails field)
{
datePicker = new CustomDatePicker
{
IsTabStop = false,
MaxHeight = 0,
Value = field.SelectedDate
};
datePicker.DataContext = field;
datePicker.ValueChanged += DatePicker_ValueChanged;
LayoutRoot.Children.Add(datePicker);
datePicker.ClickDateTemplateButton();
}
을 다음과 같이 내가 날짜 선택기 및 timepicker를 시작하고있어
<TextBox Visibility="{Binding TBVisibility}" IsReadOnly="{Binding TBReadOnly}" InputScope="{Binding Numeric}" AcceptsReturn="{Binding MultiLine}" Width="{Binding TBWidth}" TextWrapping="Wrap" Text="{Binding Path=TBText, Mode=TwoWay}" GotFocus="TextBox_GotFocus_1" KeyUp="TextBox_KeyUp_1" LostFocus="TextBox_LostFocus_1" />
<TextBox Visibility="{Binding TB2Visibility}" IsReadOnly="True" Width="140" Text="{Binding TB2Text, Mode=TwoWay}" GotFocus="TextBox_GotFocus_2" />
을 다음과 같이
목록 상자의 데이터 템플릿의 XAML 코드는 목록 상자의 데이터 컨텍스트입니다 . 나는 그것의이 텍스트 상자에 반영되지 않은 시간을 변경하면
private void DatePicker_ValueChanged(object sender, DateTimeValueChangedEventArgs e)
{
DatePicker currentDP = sender as DatePicker;
TFDetails callingField = currentDP.DataContext as TFDetails;
if (callingField != null)
{
callingField.SelectedDate = currentDP.Value;
callingField.TBText = currentDP.ValueString;
}
}
을 다음과 같이
의 valueChanged 이벤트입니다. 나는 또한 INotifyChangedProperty를 썼다.
나는 내가 할 수 여기서 뭘 할 수 있는지 실수 알 수 있습니다.
실제로 완벽하게 작동하는 비슷한 UI 페이지에서 동일한 코드가 있습니다. 내가 여기서 무슨 실수를하는지 모르겠다.
감사합니다.
나는 정확하게 당신이 말하는 것을 이해하고 있지 않습니다. 제발 좀 더 명확 해 줄래? – Presse
전체 ListBox 코드를 게시하고 바인딩 할 데이터 구조를 설명하십시오. – Pein
시간을내어 주셔서 감사합니다. onNavigatedTo 이벤트에서 바인딩 클래스를 채 웠습니다. 따라서 날짜 표시기가 닫히면 OnNavigatedTo 이벤트가 호출되어 필드가 다시 채워집니다. 나는 그것에 대한 해결 방법을 발견했다. – Presse