2013-07-19 2 views
1

는 내가 DockPanel은 텍스트 상자이바인딩을 사용하여 DataContext를 설정하는 방법은 무엇입니까?

<TextBox x:Name="tbCount" Text="{Binding Path=Count,Mode=OneWay}" /> 
</DockPanel> 
</Window> 

이 내가 HonapokList을 설정하는 방법이다, 그래서 기본적으로 목록 문자열입니다>

처럼, 거기 Dockpanel 안쪽이

<Window ... > 
<DockPanel x:Name="myDock" DataContext="{Binding HonapokList}" > 

처럼 설정

public List<String> HonapokList; 
    public MainWindow() 
    { 
     InitializeComponent(); 
     HonapokList = new List<string>();   
     Honapok.ItemsSource = HonapokList; 
     HonapokList.Add("January"); 
     HonapokList.Add("February"); 
     HonapokList.Add("March"); 
    } 

내 텍스트 상자에 HonapokList (이 예제에서는 3 개)의 요소 수를 표시하고 싶지만 아무 것도 없습니다. 왜 그런가요?

답변

2

Window에는 기본값 인 DataContext이 없지만 사용자가 설정했다고 가정하는 것처럼 보입니다. 당신은 어떻게 그것을 설정할 수 있습니다 중 하나를 생성자 :

DataContext = this; 

또는

XAML에서 :

<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"> 

또한 속성이 아닌 필드로로 HonapokList을 변경할 필요 해요 이제는 그것을 묶기 위해서입니다.

+0

답장을 보내 주셔서 감사합니다. – Wtf1sh

+0

이 C 날카로운 코드는 XAML에서 무엇을합니까? MyStackPanel.DataContext = MyProperty; – Wtf1sh

+0

XAML에서 사용하는 DataContexts 및 호출 위치에 따라 다르지만

1

우선 Properties으로 바인딩 할 수 있으며 fields으로 바인딩 할 수는 없습니다. 둘째

public List<String> HonapokList { get; } 

RelativeSource 사용하여 Window 클래스의 속성에 대한 조회하여 XAML을 변경 - - 그래서, HonapokList에게 재산을 창문에 DataContext을 설정

<DockPanel x:Name="myDock"> 
    <TextBox x:Name="tbCount" 
      Text="{Binding Path=HonapokList.Count, Mode=OneWay, 
          RelativeSource={RelativeSource Mode=FindAncestor, 
                AncestorType=Window}}"/> 
</DockPanel> 

또는

<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"> 

및 th 이렇게 할 수 있어요 -

+0

이것은 나에게도 도움이된다. 고마워! – Wtf1sh

관련 문제