0

我注意到我的 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属性的绑定PivotItem,则一切正常,否则...应用程序将抛出异​​常,完全静默,并且在任何情况下都不会出现(您只能在输出窗口):

A first chance exception of type 'System.Exception' occurred in System.Windows.dll

如果您Header手动分配属性,则不会引发异常。

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

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

有谁知道这个问题?

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

任何帮助将不胜感激...谢谢!

4

1 回答 1

0

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

this.Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded);
于 2012-08-29T16:44:30.130 回答