我有一个用于新版PC的.NET 4.5应用程序,但现在我有一个Windows XP客户端:/所以我要恢复,我成功恢复到.net 4 for Windows XP,一切运行完美在Windows 7上> Windows 10.但是我在Windows XP中遇到了一些严重的内容呈现问题,现在我在这里问过之前,我搜索了Google并在这里找到了解决方案。但到目前为止没有运气。这就是问题, 我有MainWindow和Window1(示例),主窗口包含一些红色背景标签,按钮和一个contentcontrol(当前为null,因此它不可见),点击按钮,我有这一行:
this.contentControl.Content = new Window1().Content;
窗口1背景设置为红色,因此它只是更改背景,这可以在我的机器上运行(Windows 10),但同样的应用程序在win xp上崩溃,查看图片。有任何想法吗? (我的整个应用程序是使用.Content更改窗口所以我必须以某种方式修复chaging内容的绘制,任何想法尝试什么?)。
更新:对不起,我没有包含例外:
Specified element is already the logical child of another element. Disconnect it first.
编辑后: 这是按钮点击:
this.contentControl.Content = new UserControl1().Content;
奖金问题:: 因为我的应用程序非常大,而且无论我在哪里使用窗口,现在我必须切换到用户控件才能使用此方法...因为如果我切换
this.contentControl.Content = new UserControl() { Background = Brushes.Green };
到
this.contentControl.Content = new Window() { Background = Brushes.Green };
再次弹出异常...任何方法来解决这个问题......如果没有..我会将窗口更改为用户控件没问题...
非常感谢先生" mm8"解决我的问题:))
答案 0 :(得分:1)
您可以将Window1的内容移动到UserControl:
<Window x:Class="WpfApplication1.Window1"
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"
mc:Ignorable="d"
Title="Window8" Height="300" Width="300">
<Grid>
<local:UserControl1 />
</Grid>
然后,您可以简单地创建此UserControl的实例,并将MainWindow中ContentPresenter的Content属性设置为:
this.contentControl.Content = new UserControl1();
答案 1 :(得分:0)
这是你应该使用ContentPresenter
for。
更新您的MainWindow:
<Window x:Class="WpfApplication9.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"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<ContentPresenter x:Name="ContentPresenter"/>
<Label Content="yoooooo"/>
<Button Height="50" Width="75" Click="Button_Click"/>
</Grid>
</Window>
点击事件/代码隐藏:
private void Button_Click(object sender, RoutedEventArgs e)
{
var newControlContent = new ContentControl
{
Content = new UserControl1()
};
ContentPresenter.Content = newControlContent;
}
用户控件:
<UserControl x:Class="WpfApplication9.UserControl1"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid Background="PaleVioletRed">
</Grid>
</UserControl>