1

嗨,我想在程序从外部文件启动期间加载我的元素。下面是我的代码:

<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 用 load 方法

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 结尾(我无法粘贴它,不知道为什么)

我做错了什么?因为当程序启动时没有任何反应,我的模型是不可见的:>(这不是视口代码的问题,因为它在移动到外部文件之前工作正常)。

4

1 回答 1

0
_viewport3D = XamlReader.Load(mysr.BaseStream) as Viewport3D;

你不能像那样操纵控制树。相反,您应该附加元素。

首先,Viewport3D从 XAML 中删除 。

其次,给你的网格起一个名字,比如说_grid

第三,将上述行更改为:

_grid.Children.Add(XamlReader.Load(mysr.BaseStream) as Viewport3D);

这是操作控制树的适当方式。

于 2013-02-15T14:23:29.127 回答