我正在为我的移动应用程序配置一个基本页面,使其具有几个额外的布尔依赖属性来激活或停用一些通用应用程序栏菜单项。即使我正在使用有关其默认值的元数据注册这些依赖属性,但似乎从未调用过该值的设置器。
public class MyPageBase : PhoneApplicationPage
{
public MyBasePage() {
DefaultStyleKey = typeof(MyPageBase);
}
public static readonly DependencyProperty ShowSettingsMenuItemProperty =
DependencyProperty.Register(
"ShowSettingsMenuItem",
typeof(bool),
typeof(MyPageBase),
new PropertyMetadata(true, ShowSettingsMenuItemChanged));
public static readonly DependencyProperty ShowLogoutMenuItemProperty =
DependencyProperty.Register(
"ShowLogoutMenuItem",
typeof(bool),
typeof(MyPageBase),
new PropertyMetadata(true, ShowLogoutMenuItemChanged));
}
然后我假设我需要为将这两个属性设置为其值的页面创建一个默认的“主题”。我在其中创建了一个 Themes 文件夹和一个 Generic.xaml 文件,其构建操作设置为 Page。然后,我定义了一个针对页面类型的非常简单的样式,将这两个属性设置为其元数据中的默认值。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:view="clr-namespace:MyApplication.View">
<Style TargetType="view:MyPageBase">
<Setter Property="ShowLogoutMenuItem" Value="True" />
<Setter Property="ShowSettingsMenuItem" Value="True" />
</Style>
</ResourceDictionary>
但是,当基页的构造函数中的第一行被命中时,会引发以下异常:
System.ArgumentException:值不在预期范围内。
我检查了 ILSpy 中的编译库,并且 Resources 文件夹确实包含一个 g.resources 文件夹,其中包含项目中的所有 XAML 文件,包括一个用于主题/generic.xaml 的文件。需要做什么才能正确初始化这些依赖属性的默认值?