我注意到我的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 ......而且它也很烦人!
我真的很讨厌看到非托管异常......
有人知道这个问题吗?
任何解决方案/解决方法?
非常感谢任何帮助......谢谢!
答案 0 :(得分:0)
根据提供的代码,我怀疑问题是没有设置DataContext。在您的示例中,DataContext在PhoneApplicationPage_Loaded事件中设置。但是,您似乎没有在任何地方注册此活动。在MainPage的构造函数中,添加如下行:
this.Loaded += new RoutedEventHandler(PhoneApplicationPage_Loaded);