Perché il databinding TwoWay non funziona sulla proprietà text di un combobx in .net 4.0 (funziona in .net 3.5)?Perché il databinding TwoWay non funziona sulla proprietà text di un combobx in .net 4.0?
Il mio codice:
ho un file XML in questo modo:
<xml>
<combobox option="" obs="tralala">
<option value="here" />
<option value="there" />
</combobox>
<combobox option="blue" obs="">
<option value="one" />
<option value="two" />
<option value="three" />
</combobox>
</xml>
e ho un controllo ListItem
del genere:
<ListBox DataContext="{Binding UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem="True">
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel LastChildFill="True">
<ComboBox MinWidth="75" IsEditable="True"
IsReadOnly="False" DockPanel.Dock="Left"
DataContext="{Binding Path=Element[combobox ]}"
IsSynchronizedWithCurrentItem="False"
ItemsSource="{Binding Path=Elements[option], UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Attribute[value].Value"
Text="{Binding Path=Attribute[option].Value, UpdateSourceTrigger=PropertyChanged}"
/>
<TextBox MinWidth="150" AcceptsReturn="False"
AcceptsTab="False" TextWrapping="NoWrap"
Text="{Binding Path=Attribute[obs].Value, UpdateSourceTrigger=PropertyChanged}" />
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Ecco il codice dietro:
XDocument xdXml;
public MyWindow()
{
xdXml = XDocument.Load(@"C:\file.xml");
InitializeComponent();
DataContext = xdXml;
xdXml.Changed += new EventHandler<XObjectChangeEventArgs>(XdXml_Changed);
}
private void XdXml_Changed(object sender, XObjectChangeEventArgs e)
{
xdXml.Save(@"C:\fichier.xml");
}
faccio così perché posso avere un ComboBox
con auto-completamento con l'opzione différents personalizzato per ciascuno, ma posso scrivere quello che voglio, e il risultato è nell'opzione attributo dell'elemento <combobox>
E funzionano bene se obiettivo .net 3.5, ma solo binding di textbox se destinazione .net 4.0
Perché? Cosa posso fare?
Grazie per l'aiuto!
Non riesco a farlo funzionare. È possibile correggere il codice di esempio? Si prega di creare una nuova applicazione WPF, copiare e incollare il codice di esempio in quel nuovo progetto e provare ad eseguirlo. Ho completato questi passaggi e non sono riuscito a ottenere contenuti nella casella di riepilogo. –