数据绑定没有给出预期的结果windows phone

时间:2014-04-29 16:28:37

标签: c# xaml windows-phone-8 data-binding

在我的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。

enter image description here enter image description here

我可以知道我在这里可能犯的错误。

我实际上在类似的UI页面中具有完全相同的代码。我不知道我在这里做了什么错误。

感谢。

1 个答案:

答案 0 :(得分:0)

ListBox是一个集合控件。如果你有一个DataTemplate,那么它中的绑定将使用一个集合的元素作为DataContext而不是DataContext整个ListBox的ItemsSource。