2013-08-24 5 views
1

나는이DataTemplate을 구성원으로 바인딩

public class DefaultDataTemplate : DataTemplate 
{ 

    public string Name 
    { 
     get; 
     set; 

    } 
} 

같은 데이터 템플릿을 가지고 있고 나는 내 DataTemplate을의 "이름"속성에 바인딩하고 싶은이

<!-- Default DataTemplate --> 
    <DataTemplate x:Key="DefaultDataTemplate"> 
     <Grid Margin="4" MinHeight="25"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="{Binding Name}" FontWeight="Bold" />    
     </Grid> 
    </DataTemplate> 

같은 XAML에서 사용하고 ,하지만 지금은 내 이름이 "이름"이라는 속성을 바인딩 할 수 있습니다. 올바른 방법이나 구문에 대한 도움이 될 수 있습니다.

답변

1

DataTemplate의 경우 DataContext은 DataO 템플릿 화 중이라면 DataTemplate 또는이 경우 DefaultDataTemplate에 다시 바인딩해야 속성에 액세스 할 수 있습니다.

시도 :

Text="{Binding Name, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataTemplate}}} 

또는

Text="{Binding Name, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type myNamespace:DefaultDataTemplate }}} 
1

당신은 템플릿을 사용하지 않는, 당신은 단지 클래스와 템플릿에 동일한 키 이름을 주었다.

또한 사용자 지정 데이터 템플릿에는 바인딩 할 종속성 속성이 있어야합니다.

<ListBox ItemsSource="{Binding Persons}"> 
    <ListBox.DataTemplate> 
     <DataTemplate > 
      <Grid Margin="4" MinHeight="25"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="Name" FontWeight="Bold" /> 
       <TextBox Margin="8,0" Grid.Column="1" Text="{Binding Name}" /> 
      </Grid> 
     </DataTemplate> 
    </ListBox.DataTemplate> 
</ListBox> 

아니면

<Window.Resources> 
    <DataTemplate x:Key="DefaultDataTemplate"> 
     <Grid Margin="4" MinHeight="25"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*" /> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="Name" FontWeight="Bold" /> 
      <TextBox Margin="8,0" Grid.Column="1" Text="{Binding Name}" /> 
     </Grid> 
    </DataTemplate> 
</Window.Resources> 

<ListBox ItemsSource="{Binding Persons}" DataTemplate="{StaticResource DefaultDataTemplate}"/> 

Person 클래스를 속성 이름을 가진 가정하고 사람 속성은 Observable<Person>

입니다 :

는 실제로이 일을 의미합니까

관련 문제