2010-08-02 9 views
0

나는 itemsviewer가 MyModel의 ObservableCollection 인 listview를 가지고 있습니다.WPF에서 속성의 속성에 바인딩하는 방법

<TextBlock Text="{Binding Owner.Name}" /> 

을하지만 TextBlock을 비워 둡니다 : 나는 시도 모델의 소유자 속성

public class Person 
{ 
    public string Name { get; set; } 
    public string Address { get; set; } 
    //... 
} 

public class MyModel 
{ 
    public string Title { get; set; } 
    public Person Owner { get; set; } 
    //... 
} 

의 이름 속성에 텍스트 상자 텍스트의 속성을 바인딩하는 방법을 내려고 노력하고있다. 적절한 구문은 무엇입니까?

답변

1

바인딩이 정상적으로 보입니다. 나는 TextBlockDataTemplate에 넣고 이것을 ListView에 붙인 것으로 가정합니다. 그렇다면 작동합니다.

오류를 찾으려면 Binding을 리터럴로 바꾸어 일부 행이 있는지 확인하십시오 (모든 행에 리터럴이 나와야 함). 그렇지 않은 경우 ItemsSource을 확인하십시오. 예인 경우 MyModel -instances에 실제로 Person- 개체가 연결되어 있고 Name- 속성이 null 또는 비어 있지 않은지 확인합니다. VS의 출력 창도 확인하십시오. 거기에서 구속력이있는 오류를 볼 수 있습니다. 당신은, 예를 들어 여기에는 DataTemplate을이없는 경우

: 난 그냥 CLIK, 이러한 클래스를 추가하고 클릭 2010 VS 데이터 원본 마법사 양식을 사용하는

<ListView ItemsSource="[Your ItemsSource]"> 
    <ListView.ItemTemplate>     
     <DataTemplate> 
      <Grid> 
       <TextBlock Text="{Binding Owner.Name}"/> 
      </Grid>      
     </DataTemplate>     
    </ListView.ItemTemplate>          
</ListView> 
+0

를 CLIK 바보. Idle은 실제로 Name 속성을 공용 멤버로 갖는 속성으로 설정했습니다. 죄송합니다. –

0

DataContext가 올바르게 설정되어 있는지 확인하고 INotifyPropertyChanged (속성 값이 변경되면 정의 된 이벤트 발생)를 구현하십시오.

0

시도는 내가

<TextBox Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Left" Margin="3" Name="nameTextBox" Text="{Binding Path=Owner.Name, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}" VerticalAlignment="Center" Width="120" /> 
관련 문제