我正在使用silverlight,我的代码是为usercontrol设置的,如下所示:
myxaml.xaml (只显示切换按钮[第119行])
<ToggleButton x:Name="btnToggleResizeMap" Checked="btnToggleResizeMap_Checked" Unchecked="btnToggleResizeMap_Unchecked" IsChecked="True"/>
codebehind.cs
public partial class MapRadar : UserControl
{
public delegate void OnMapExpandChange(object sender, EventArgs e);
public event OnMapExpandChange Expanded;
public event OnMapExpandChange NotExpanded;
private void btnToggleResizeMap_Checked(object sender, System.Windows.RoutedEventArgs e)
{
NotExpanded(this, null); //If i remove this line, the app runs fine
}
private void btnToggleResizeMap_Unchecked(object sender, System.Windows.RoutedEventArgs e)
{
Expanded(this, null); //If i remove this line, the app runs fine
}
}
Visual Studio在应用程序完全加载之前抛出此错误:
AG_E_PARSER_BAD_PROPERTY_VALUE [线路:119位置:285]
在:
System.Windows.Application.LoadComponent(this, new System.Uri("/Xormis.Silverlight.ExSys;component/Views/Map/MapRadar.xaml", System.UriKind.Relative));
位于名为 public void InitializeComponent()
的函数内我不知道这里发生了什么,是否有反对在另一个事件中进行事件调用的事情?
答案 0 :(得分:2)
问题是你有空事件。创建复选框后,它会立即引发Unchecked
事件,该事件会调用btnToggleResizeMap_Unchecked
处理程序,该处理程序会尝试调用您的Expanded
事件。由于Expanded
为null,因此抛出异常,并且它永远不会完成运行XAML。
您的代码应如下所示:
private void btnToggleResizeMap_Checked(object sender, System.Windows.RoutedEventArgs e)
{
if (NotExpanded != null)
NotExpanded(this, null);
}
private void btnToggleResizeMap_Unchecked(object sender, System.Windows.RoutedEventArgs e)
{
if (Expanded != null)
Expanded(this, null);
}
有关事件的更全面说明,请参阅C# Events and Thread Safety