3

注:リクエストにより、XAML および xaml.cs ファイルの完全なコードを追加しました。

WPFでは、次のDockPanelようなものを作成しました:

<Window x:Class="RealEditor.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
        Title="RealEditor" Height="500" Width="700">
    <DockPanel>
        <GridSplitter Grid.Column="1" Width="4" HorizontalAlignment="Left"/>
        <DockPanel x:Name="ftpDock" Grid.Row="1" Grid.Column="1"></DockPanel>
    </Grid>???
    </DockPanel>
</Window>

プログラムで に を追加したいTreeViewのですDockPanelが、Window1.xaml.cs で をDockPanel名前で取得して追加することができません。

namespace RealEditor
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
  public partial class Window1 : Window
  {
    public Window1()
    {
      InitializeComponent();
      TreeViewItem mytreeView = new TreeViewItem();
      ftpDock.Children.Add(myTreeView);
    }
  }
}

上記のコードは、次のエラーを返します。

"The name 'ftpDock' does not exist in the current context"

私は単純なものを見逃したと確信しています。何か案は?

4

3 に答える 3

1

まず、XAML が壊れています。</Grid>Grid タグの開始に関連付けられていないエクストラがあります。

プロジェクトを作成し、XAML とコード ビハインドをコピーしました。キャプティライゼーションの違いと余分なタグの修正は別として、私の場合は正常に動作します。

私の完全な XAML:

<Window x:Class="WPFTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <DockPanel>
        <GridSplitter Grid.Column="1" Width="4" HorizontalAlignment="Left"/>
        <DockPanel x:Name="ftpDock" Grid.Row="1" Grid.Column="1"></DockPanel>
    </DockPanel>
</Window>

コードビハインド:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();

        TreeViewItem mytreeView = new TreeViewItem();
        ftpDock.Children.Add(mytreeView);
    }
}

すべてのタグをチェックし、無関係なランダムなタグが浮かんでいないことを確認してください

于 2010-01-17T00:38:06.467 に答える
0

さらにテストとトラブルシューティングを行ったところ、DockPanel だけでなく、Window1.xaml に追加されたコントロールを参照できないことがわかりました。この問題を解決するには、Window1.xaml ファイル プロパティのカスタム ビルド フィールドに "MSBuild:Compile" を追加する必要がありました。

私のプロジェクトでそのフィールドが空白だった理由はわかりませんが、これが同じ「バグ」を経験している他の人に役立つことを願っています.

于 2010-01-17T02:07:41.360 に答える
0

あなたの xaml には、ウィンドウに適切なクラス属性がありますか?

<Window x:Class="YourAssemblyName.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
            <DockPanel Grid.Row="1" x:Name="ftpDock" Grid.Column="1"></DockPanel>
    </Grid>
</Window>

ここを参照してください: WPF C# クラス、TextBox およびリファレンス、Easy(?) 「現在のコンテキストには存在しません」

于 2010-01-16T18:21:02.743 に答える