2011-03-06 4 views
0

XAML 페이지에 여러 DataContexts을 올바르게 설정하는 방법을 찾으려고합니다. 기본 코드를 가지고 코드를 생성하고 ItemSource 바인딩을 AutoCompleteBox으로 설정합니다. 동시에, labelsDataSource을 그리드 내부에 설정하는 또 다른 datacontext이 있습니다. 이 datacontext를 설정하면 AutoCompleteBox의 itemsSource 바인딩이 손실됩니다. AutoCompleteBox은 그 표 안에 있습니다.여러 Datacontext 설정

MyAutoCompleteBox.DataContext = this; 

을 할 수있는 더 좋은 방법이 있는지 궁금 오전 : 나는 objetc에 직접이 방법을 DataContext을 할당하는 방법은 무엇인가? 도움을 위해 미리 감사드립니다!

것은 자동 완성 상자를 설정 : 뒤에

<sdk:AutoCompleteBox x:Name="MyAutoCompleteBox" IsTextCompletionEnabled="True" ItemsSource="{Binding Items}" /> 

코드 :

public IList<string> Items 
    { 
     get; 
     private set; 
    } 

    public Basic_ChildWindow() 
    { 
     InitializeComponent(); 
     Items = new List<string>(); 
     Items.Add(@"One"); 
     Items.Add(@"Two"); 
     Items.Add(@"Three"); 

     DataContext = this; 
    } 

같은 XAML 페이지의 또 다른 데이터 컨텍스트는 AutoCompleteBox는 그리드 내부 :

<Grid x:Name="grdBasic_ChildWindow_Right" Style="{StaticResource GridStyle}" DataContext="{Binding Source={StaticResource LabelsDataSource}}"> 

답변

0

아니에요 확실히 당신의 질문을 이해합니다 - "labelsDataSource"는 무엇입니까?

그러나 게시 한 내용이 모두 코드이고 더 이상 내용이 없다면 단순히 표에서 datacontext/binding을 제거하십시오. 그리드에는 datacontext 세트가 필요하지 않습니다 (이는 데이터 관련이 아닌 단순히 시각적 컨테이너 일뿐입니다).

그래서이를 변경 :

<Grid x:Name="grdBasic_ChildWindow_Right" Style="{StaticResource GridStyle}" DataContext="{Binding Source={StaticResource LabelsDataSource}}"> 

을이 사람 :

<Grid x:Name="grdBasic_ChildWindow_Right" Style="{StaticResource GridStyle}">