<!--MainWindow.xaml-->
<Window x:Class="TestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
// MainWindow.xaml.cs
namespace TestApp
{
internal sealed partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
// App.xaml.cs
namespace TestApp
{
public partial class App : Application
{
public App()
{
InitializeComponent();
}
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
var mainWindow = new MainWindow();
mainWindow.Content = new SubControl();
mainWindow.Activate();
}
}
}
// SubControl.cs
namespace TestApp.Controls
{
internal class SubControl : NavigationView
{
}
}
上述代码在加载SubControl时导致异常。
e.Exception:{“未检测到已安装的组件。(0x800F1000)"},System.Exception {System.Runtime.InteropServices.COMException}
e.消息:“无法将TargetType为'Microsoft.UI.Xaml.Controls.NavigationView'的样式应用于类型为'Microsoft.UI.Xaml.Controls. ContentControl'的对象。”
如果SubControl是从xaml创建的,或者继承了Button、TextBox、CheckBox等,它将正常工作。
我尝试做的是创建一个继承NavigationView的自定义控件。为了实现我想要定制的部分,我认为使用子类比应用Behavior更好。
将断点应用于“mainWindow.Content = new SubControl();”时引发异常“.
如果不应用断点,则没有异常,但不显示控件。
2条答案
按热度按时间dced5bon1#
你可以用另一个没有 Default____Style 的控件得到同样的行为(例如 DefaultButtonStyle)。
目前我能想到的唯一解决方法是从generic.xaml中引入样式,并将
TargetType
更改为 SubControl。tnkciper2#
@AndrewKeepCoding正在尝试解析Control.DefaultStyleKey。在最简单的情况下,您可以使用
NavigationView
样式。只需添加一个新的自定义控件并替换以下代码。