Lier la liste de zones de texte à l'intérieur de la zone de liste dans WPF
-
21-12-2019 - |
Question
Je dois créer une listbox avec une zone de texte dedans...et cela doit être dynamique.J'ai une collection observable dans le code derrière et je souhaite la lier à la listbox.Je veux une zone de liste dynamique et cette liste doit contenir une zone de texte modifiable.Donc, fondamentalement, je veux lier une zone de texte multiplr à partir d’une zone de liste.Toute aide serait appréciée
<ListBox HorizontalAlignment="Left" Name="ListTwo" Height="100" Margin="286.769,165.499,0,0" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Source=obs}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList"></TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
En faisant cela, j'ai le même nombre de zones de texte que les éléments de la collection observable, mais le texte de la zone de texte n'est pas configuré.
La solution
Vous devrez lier votre zone de texte à la propriété de votre classe de laquelle la collecte observable que vous avez liée
<ListBox HorizontalAlignment="Left" Name="ListTwo" Height="100" Margin="286.769,165.499,0,0" VerticalAlignment="Top" Width="100" ItemsSource="{Binding Source=obs}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Binding="{Binding PROPERTYINCLASS}"></TextBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Autres conseils
Si les éléments de votre ObservableCollection
sont tout simplement string
s, vous pouvez alors lier les données à la valeur de chaîne entière comme ceci :
<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList" Text="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Du Binding.Path
Propriété page sur MSDN :
En option, un chemin point (.) peut être utilisé pour établir une liaison avec la source actuelle.Par exemple,
Text="{Binding}"
est équivalent àText="{Binding Path=.}"
.
Notez que si vous aviez des objets avec des propriétés dans la collection, alors la réponse de @nit aurait été correcte car vous auriez besoin de référencer le nom de la propriété pertinente :
<ListBox Name="ListTwo" ItemsSource="{Binding Source=obs}" ... >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Name="TextBoxList" Text="{Binding PropertyName}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>