J'ai une liste <> d'objets que j'ai liés à un ListBox. Je veux ensuite lier les propriétés de SelectedValue à divers TextBox. Le comportement est très vilain cependant. Lors de la liaison du nom (une chaîne) utilisé comme DisplayMember pour le contrôle ListBox, il ne met pas à jour le contrôle ListBox et si j'essaie d'actualiser la liaison sur l'événement TextChanged, il ne met pas à jour jusqu'à la sélection changements, puis il a des problèmes de commutation de la sélection. Lors de la liaison Balance (une décimale), il les modifie tous (ou, éventuellement, le changement est appliqué lorsque je change la sélection, mais il est en train de changer les données, pas seulement de ne pas mettre à jour). Pour être clair, j'utilise C# .NET et non pas ASP.C#: Lier TextBox à SelectedValue
0
A
Répondre
1
En supposant WPF, un échantillon rapide:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<ListBox x:Name="list"
ItemsSource="{Binding}"
DisplayMemberPath="Name"/>
<TextBox Text="{Binding ElementName=list, Path=SelectedItem.Name}"
Grid.Row="1"/>
<TextBox Text="{Binding ElementName=list, Path=SelectedItem.Val}"
Grid.Row="2" />
</Grid>
</Window>
namespace WpfApplication1 {
public class Thing : INotifyPropertyChanged {
private string _name;
private double _val;
public string Name {
get { return _name; }
set {
_name = value;
OnPropertyChanged("Name");
}
}
public double Val {
get { return _val; }
set {
_val = value;
OnPropertyChanged("Val");
}
}
protected void OnPropertyChanged(string propertyName) {
PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if (propertyChanged != null) {
propertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
DataContext = new List<Thing> { new Thing { Name = "A", Val = 1.0 }, new Thing { Name = "B", Val = 2.0 } };
}
}
}
0
Je trouve la solution à Switch on the Code. Fondamentalement, j'ai besoin d'utiliser la collection BindingList au lieu de simplement List.
Questions connexes
- 1. Liaison Combobox SelectedValue to Textbox
- 2. reset SelectedValue lors textbox changement
- 3. Comment lier le SelectedValue d'un ComboBox à une propriété?
- 4. Pouvons-nous lier notre TextBox à un OnTextChangedEvent pour MVVM?
- 5. C# - Reliure TextBox à un nombre entier
- 6. Comment se lier à TextBox Couleur d'arrière-plan
- 7. Comment lier une propriété de classes à un TextBox?
- 8. en asp.net textbox utilisant C#
- 9. SelectedValue de DropDownlList
- 10. Liaison DataRow à TextBox
- 11. C#, textbox, .NET
- 12. Temperature TextBox In C#
- 13. Validation TextBox - C#
- 14. Get SelectedValue à SelectedIndex dans DropDownList?
- 15. C# - Textbox Newline Problèmes
- 16. C# textbox rendez-vous
- 17. SelectedValue et jquery
- 18. Attribut Custom SelectedValue
- 19. Définir SelectedValue pour un DropDownList met également à jour la SelectedValue pour un autre DropDownLIst
- 20. DropDownList SelectedValue ne lie pas correctement
- 21. WPF: SelectedValue toujours null
- 22. Comment lier l'événement onchange d'un TextBox en utilisant JQuery?
- 23. WPF Étiquette à textBox
- 24. C# WPF XAML lier à DataTable
- 25. lier des objets hérités à C# DataGrid
- 26. Liaison de SelectedValue à une zone de liste déroulante WPF
- 27. SelectedValue invalide - n'existe pas dans la liste - C#/ASP.NET
- 28. C# Mettre chaîne en TextBox
- 29. C# 2.0 Compact Framework TextBox
- 30. Obtenez première ligne textbox C#
Pouvez-vous poster du code? Votre liste contient-elle des objets dérivés de INotifyPropertyChanged? – lesscode
Aussi: Silverlight, WinForms ou WPF? –
Je ne sais pas ce que j'utilise (Silverlight, WinForms, WPF). Je pense que c'est WinForms. voici comment je lie nameTxb.DataBindings.Add ("Text", accountsLsb, "SelectedValue.Name"); et ne met pas à jour la liste. Il met à jour les données réelles mais vous devez changer la sélection pour l'obtenir pour mettre à jour le nom dans la liste. –