2010-05-15 5 views
2

je l'AutoCompleteBox suivante définie à l'intérieur DataTemplate:Reliure AutoCompleteBox intérieur DataTemplate

<Window.Resources> 
    <DataTemplate x:key="PaneTitleTemplate"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
     </Grid.ColumnDefinition> 
     <ContentPresenter Content="{Binding}" /> 
     <toolkit:AutoCompleteBox x:Name="InsertBox" ItemsSource="{???}" /> 
    </Grid> 
    </DataTemplate> 
</Window.Resources> 
... 
<radRock:RadPane x:Name="pane1" TitleTemplate="{StaticResource PaneTitleTemplate}"/> 

Maintenant, j'aimerais le remplir avec une liste de chaînes, mais je ne sais pas quelle liaison dois-je utiliser. La liste des chaînes est une variable d'instance de la fenêtre. Que devrais-je faire?

Répondre

1

Une partie de la question est quel est votre DataContext. Si c'est la fenêtre elle-même ou est-ce un autre objet. Si c'est la fenêtre, alors vous n'avez pas besoin de le spécifier dans la liaison, si c'est un autre objet, vous devez spécifier que vous utilisez la fenêtre comme source de liaison. Je pense que la gloutonnerie vous voulez est la suivante (vous pouvez supprimer le ElementName si la fenêtre est le DataContext):

ItemsSource="{Binding StringListName, ElementName=WindowName}" 

StringListName et évidemment remplacer NomFenêtre avec le nom qu'ils ont en réalité dans votre fenêtre.

+0

Je ne connais pas le concept de DataContext, mais j'ai essayé {Binding StringListName, ElementName = MainWindow}, et cela n'a toujours pas fonctionné. StringListName est un membre public de MainWindow.xaml.cs. Si je gère l'événement Loaded et que j'assigne ItemsSource manuellement, cela fonctionne. – Thiago

+0

Peu importe, vous avez raison en débogage et vous avez raison. – Thiago