注意:按要求,我已添加了我的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
,并添加到其中:< / p>
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"
我确信我错过了一些简单的事情。有什么想法吗?
答案 0 :(得分:1)
首先,您的XAML已损坏。您有一个额外的</Grid>
与打开网格标记无关。
我刚刚创建了一个项目,将你的XAML和Code复制到了后面,除了captilisation的区别并修复了额外的标签,我的工作正常。
My Full 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);
}
}
检查所有代码并确保没有任何随机的无关标签浮动
答案 1 :(得分: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# Classes, TextBox and Reference, Easy(?) "does not exist in the current context"
答案 2 :(得分:0)
经过进一步测试和故障排除后,我发现我无法引用添加到Window1.xaml的任何控件,而不仅仅是DockPanel。要解决此问题,我必须将“MSBuild:Compile”添加到Window1.xaml文件属性中的自定义构建字段。
我不确定为什么该字段在我的项目中是空白的,但希望这会帮助其他人遇到同样的“错误”。