2013-08-24 68 views
1

我有這樣用的DataTemplate成員綁定

public class DefaultDataTemplate : DataTemplate 
{ 

    public string Name 
    { 
     get; 
     set; 

    } 
} 

數據模板,我使用XAML這樣

<!-- 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> 

我想與我的DataTemplate的「名稱」屬性的綁定,但現在它綁定到我的列表視圖項目的屬性名爲「名稱」。可以幫助任何人正確的方式或語法

回答

1

DataContextDataTemplate是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>