绑定PivotItem头时出现无提示异常

时间:2012-08-29 16:18:50

标签: windows-phone-7 exception binding windows-phone-7.1 pivotitem

我注意到我的Windows Phone 7.1应用程序中有一个奇怪的例外,这让我很疯狂。

这些是事实......

我开始定义一个简单的Pivot项,里面有两个简单的PivotItem

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <controls:Pivot>
        <controls:PivotItem x:Name="PivotItem1"
                            Header="Test1" />
        <controls:PivotItem x:Name="PivotItem2"
                            Header="{Binding Path=Text2, Mode=OneWay}" />
    </controls:Pivot>
    <Button Content="Test" Click="Button_Click" />
</Grid>

这是我的代码隐藏......

编辑:正如Gambit建议的那样,我会告诉你更多代码。

在实际情况中,我有 MVVM,但在这种情况下,我简化了这种情况,让您轻松地重现问题......

对于此测试,下一个是我的视图:

public partial class MainPage : PhoneApplicationPage, INotifyPropertyChanged
{
    private string _text2 = "<Missing>";

    public string Text2
    {
        get
        {
            return _text2;
        }
        private set
        {
            _text2 = value;

            NotifyPropertyChanged("Text2");
        }
    }


    public MainPage()
    {
        InitializeComponent();
    }

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        this.DataContext = this;
    }


    public event PropertyChangedEventHandler PropertyChanged;

    public void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }


    private void Button_Click(object sender, RoutedEventArgs e)
    {
        this.Text2 = "Second page";
    }
}

因此,不只是NULL值的参数初始化:您将看到异常。

显然,您要求我提供controls命名空间声明。这是:

xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"

这是指程序集Microsoft.Phone.Controls.dll,版本 2.0.50727

我的问题与绑定有关(因为我发现调查问题):

Header="{Binding Path=Text2, Mode=OneWay}"

如果你不使用链接到Header的{​​{1}}属性的绑定,一切都运行良好,否则......应用程序将抛出一个异常,完全沉默,它不会显示在任何情况下(你只能在输出窗口中看到异常):

PivotItem

如果手动分配A first chance exception of type 'System.Exception' occurred in System.Windows.dll 属性,则不会抛出任何异常。

我想彻底删除这些异常,因为我对Header属性有很多绑定,我不想破坏我的MVVM ......而且它也很烦人!

我真的很讨厌看到非托管异常......

有人知道这个问题吗?

任何解决方案/解决方法?

非常感谢任何帮助......谢谢!

1 个答案:

答案 0 :(得分:0)

根据提供的代码,我怀疑问题是没有设置DataContext。在您的示例中,DataContext在PhoneApplicationPage_Loaded事件中设置。但是,您似乎没有在任何地方注册此活动。在MainPage的构造函数中,添加如下行:

this.Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded);