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

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;

そのようにコントロール ツリーを操作することはできません。代わりに要素を追加する必要があります。

まず、Viewport3DXAML から を削除します。

次に、グリッドに名前を付けます_grid

3 番目に、前述の行を次のように変更します。

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

これは、コントロール ツリーを操作する適切な方法です。

于 2013-02-15T14:23:29.127 に答える