在我的Windows手机应用程序中,我实现了数据绑定,但没有产生预期的结果。
我的功能是我有一个列表框,其中有两个数据绑定的文本框。 单击文本框时,datepicker / timepicker将打开,所选值应反映在文本框中。
列表框数据模板的xaml代码如下
<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" />
我按如下方式启动了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();
}
&#34; field&#34;是列表框的datacontext。
ValueChanged事件如下
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;
}
}
当我更改文本框中未反映的时间时。我也写了INotifyChangedProperty。
我可以知道我在这里可能犯的错误。
我实际上在类似的UI页面中具有完全相同的代码。我不知道我在这里做了什么错误。
感谢。
答案 0 :(得分:0)
ListBox是一个集合控件。如果你有一个DataTemplate,那么它中的绑定将使用一个集合的元素作为DataContext而不是DataContext整个ListBox的ItemsSource。