我注意到我的 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 ......而且它也很烦人!
我真的很讨厌看到非托管异常...
有谁知道这个问题?
任何解决方案/解决方法?
任何帮助将不胜感激...谢谢!