Ich versuche Visual C# App, die UserControl (WPF) verwendet. Standardmäßig generiert VS Community 2015 C# UserControl im selben Namespace wie das Hauptprogramm. Es ist korrekt gebaut. Ich möchte es in seinem eigenen Namespace für mögliche zukünftige Wiederverwendung trennen. Ich ändere automatisch generierten Code, um UserControl in einem separaten Namespace zu haben.WPF Custom Control in separaten Namenapce
Hier ist mein Code
Usercontrol
<UserControl x:Class="nsTabI2CMemRW.TabI2CMemRW"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:nsTabI2CMemRW"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="500">
<Grid>
<TextBox x:Name="AddrH"/>
<Label x:Name="AddrH_Label"/>
</Grid>
C# Klasse
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WpfApplication1; // This is my main app namespace
namespace nsTabI2CMemRW
{
/// <summary>
/// Interaction logic for TabI2CMemRW.xaml
/// </summary>
public partial class TabI2CMemRW : UserControl
{
public TabI2CMemRW()
{
//InitializeComponent();
((WpfApplication1.MainWindow)Application.Current.MainWindow).InitializeComponent(); //InitializeComponent();
}
}
}
Hauptfenster XAML
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication1"
xmlns:UserControl="clr-namespace:nsTabI2CMemRW"
mc:Ignorable="d"
Title="MainWindow" Height="649.005" Width="620.667" ScrollViewer.CanContentScroll="True">
<Grid>
<TabControl x:Name="tabControl" Margin="0,0,0.4,0.2">
<TabControl.BindingGroup>
<BindingGroup/>
</TabControl.BindingGroup>
<TabItem x:Name="I2CMemReadWrite" Header="I2C Mem Read/Write">
<UserControl:TabI2CMemRW Margin="0,0,-0.2,278.2"/>
</TabItem>
<TabItem Header="TabItem">
<Button x:Name="button" Content="Button" Height="100" Width="75"/>
</TabItem>
</TabControl>
</Grid>
Designer zeigt Fehler für Zeile „Objektverweis nicht auf eine Instanz eines Objekts festgelegt wird“
<UserControl:TabI2CMemRW Margin="0,0,-0.2,278.2"/>
Programm zusammengestellt in Ordnung, aber erste Reiter (wo mein Usercontrol sein sollte) ist leer.
Ändern automatisch generierten Code von Hand ist in der Regel keine gute Idee – Fang
Sie rufen die 'InitializeComponent' der 'MainWindow' in der UserControl. Das kann nicht funktionieren und ist mehr als falsch. Und ich nehme an, dass 'Application.Current.MainWindow' null ist, weil Sie mitten in der Initialisierung des MainWindow sind -> es kann nicht existieren, während Sie es erstellen. Das ist der Grund, warum Sie eine NullReference Exception haben – Mat