您好我想在程序启动时从外部文件加载我的元素。 以下是我的代码:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:FromFile3d" x:Class="FromFile3d.MainWindow"
Title="MainWindow" Height="400" Width="800">
<Grid>
<Grid.Background>
<LinearGradientBrush EndPoint="0.789,0.541" StartPoint="0.225,0.543">
<GradientStop Color="Black" Offset="0.849"/>
<GradientStop Color="#FF232323" Offset="1"/>
</LinearGradientBrush>
</Grid.Background>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="527*"/>
<ColumnDefinition Width="265*"/>
</Grid.ColumnDefinitions>
<Button Content="Button" Grid.Column="1" HorizontalAlignment="Left" Height="26" Margin="161,28,0,0" VerticalAlignment="Top" Width="75"/>
<Viewport3D x:Name="_viewport3D" />
</Grid>
以及带有加载方法的最后一个cs
private void LoadCore()
{
string path = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "test.xaml");
if (path != null)
{
try
{
StreamReader mysr = new StreamReader(path);
_viewport3D= XamlReader.Load(mysr.BaseStream) as Viewport3D;
}
catch (Exception e)
{
MessageBox.Show(
String.Format("Unable to parse file:\r\n\r\n{0}",
e.Message), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
和我要加载的文件是我的场景和模型的Viewport3d定义,以/ Viewport3D结束(我无法粘贴它,不知道为什么)
我做错了什么?因为程序启动时没有任何反应,我的模型是不可见的:&gt; (这不是视口代码的问题,因为它在移动到外部文件之前工作正常)。
答案 0 :(得分:0)
_viewport3D = XamlReader.Load(mysr.BaseStream) as Viewport3D;
您无法像这样操纵控制树。你应该添加元素。
首先,从您的XAML中删除Viewport3D
。
其次,给你的网格命名,比如_grid
。
第三,将上述行改为:
_grid.Children.Add(XamlReader.Load(mysr.BaseStream) as Viewport3D);
这是操纵控制树的合适方法。