2010-01-16 1 views
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> 

프로그래밍 DockPanelTreeView을 추가 할 수 있지만, Window1.xaml.cs에, 나는 DockPanel 이름으로 얻을 수 없습니다입니다 :

는 WPF에서, 나는 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" 

나는 방금 간단한 걸 놓친 것 같아. 어떤 아이디어?

+1

더 많은 코드, XAML 및 코드 숨기기를 표시합니다. –

답변

0

부동 어떤 임의의 외부 태그가 없습니다 있는지 확인하십시오 문제 해결, 나는 DockPanel뿐만 아니라 Window1.xaml에 추가 된 컨트롤을 참조 할 수 없다는 것을 발견했습니다. 이 문제를 해결하려면 Window1.xaml 파일 속성의 사용자 지정 빌드 필드에 "MSBuild : Compile"을 추가해야했습니다.

내 프로젝트에서이 필드가 비어있는 이유는 확실치 않지만, 다른 사람들이 동일한 "버그"를 경험하는 데 도움이되기를 바랍니다.

+0

얼마나 이상한가, 당신이 듣고 반갑 습니다. –

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"

+0

예, XAML에서 클래스 특성이 올바르며 Window1 : Window 클래스의 DockPanel에 액세스하려고 시도하고 있습니다. – CheapDevotion

+0

어디 Window1 클래스에? 그리고 당신의 xaml은 정확히 어떻게 생겼습니까? 내가 위에 게시 한 것과 같은 .Window1 파일을 사용하면 코드 숨김에서 ftpDock에 액세스 할 수 있습니다. 더 많은 정보없이 문제를 해결하는 방법을 아는 것은 불가능합니다. –

+0

원본 글에 전체 코드를 추가했습니다. – CheapDevotion

1

첫째, 당신의 XAML이 끊어집니다. 그리드 태그를 여는 것과 관련이없는 </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); 
    } 
} 

모든 태그를 확인하고 추가 시험시 주위