2 pièce(s) jointe(s)
lier une combobox et un textbox dans un datagrid
Bonjour à vous!
je tourne en rond depuis un moment sur un binding que je n'arrive malheureusement pas à résoudre.
j'ai réalisé un datagrid (qui est une vue détail d'un élément sélectionné dans une liste). il s'affiche correctement et je peux éditer les cellule notamment grâce à une combobox.
je n'ai aucun code behind, tout a été généré par le biais de l'assistant et à l'aide de binding.
je souhaite désormais changer la valeur d'une cellule en fonction de la valeur sélectionner dans la combobox (c'est valable pour chaque ligne du datagrid).
exemple:
chaque ligne du datagrid correspond à une livraison de camion. pour chaque camion je peux réaliser une prestation (listées et selectionnée dans la combobox) à laquelle correspond une consommation (affiché dans la cellule voisine de la combobox)
au changement de prestation je souhaiterais donc que la consommation change automatiquement.
le binding marche bien à l'ouverture de l'applicationet au chargement de données, mais après modification du combobox, pas de changement du textbox lié...
ces données sont stockées dans une datatable:
id prestation litrage
1 T2 60
2 AC2 80
voici le code xaml du datagrid:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
<!--datagrid toupies-->
<GroupBox Grid.Row="1" Grid.RowSpan="1" Header="Liste des toupies" HorizontalAlignment="Stretch" Margin="1" Name="GroupBox3" VerticalAlignment="Stretch" BorderBrush="#FF004489" Grid.ColumnSpan="3">
<Grid DataContext="{StaticResource TABLE_CHANTIERTABLE_TOUPIEViewSource}">
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" Margin="1" Name="DataGrid1" VerticalAlignment="Stretch"
ItemsSource="{Binding}" AlternatingRowBackground="#FFCBCBCB" AlternationCount="2" RowHeight="25">
<DataGrid.Columns>
<DataGridTemplateColumn x:Name="_DATEColumn" Header="DATE" Width="SizeToHeader" MinWidth="110">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding Path=DATE, UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay, ValidatesOnExceptions=true,
NotifyOnValidationError=true}" BorderThickness="0" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn x:Name="_HEUREColumn" Header="HEURE D'ARRIVEE" Width="SizeToHeader"
Binding="{Binding Path=HEURE, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, ValidatesOnExceptions=true,
NotifyOnValidationError=true, StringFormat={}{0: hh:mm} }"/>
<DataGridTextColumn
Header="IMMATRICULATION" Binding="{Binding Path=IMMATRICULATION, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
<DataGridTemplateColumn Header="TYPE DE BRODURES">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate />
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Name="_COMBOBOX_TYPE_DE_BORDURE"
IsSynchronizedWithCurrentItem="false"
ItemsSource="{Binding Source={StaticResource TABLE_TYPE_BORDUREViewSource}}"
DisplayMemberPath="NOM_BORDURES"
SelectedValue="{Binding Path=NUM_BORDURE, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
SelectedValuePath="NUM_BORDURE" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="LITRAGE THEORIQUE">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate />
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Name="_LITRAGE_THEORIQUE"
Text="{Binding Path=TABLE_TOUPIETABLE_TYPE_BORDURE/LITRAGE_THEORIQUE,
UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" IsReadOnly="True" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="CUBE LIVRE" Binding="{Binding Path=CUBE, StringFormat='{}{0:F2} m3'}"/>
<DataGridTextColumn Header="LINEAIRE REALISE" Binding="{Binding Path=ML_TOUPIE, StringFormat='{}{0:F2} ml' }"/>
<DataGridTextColumn Header="CONSOMMATION" Binding="{Binding Path=ML_TOUPIE}" />
<DataGridTextColumn Header="SURCONSOMMATION" />
<DataGridTextColumn Header="CUBE RESTANT" Binding="{Binding Path=RESTANT, StringFormat='{}{0:F2} m3'}"/>
<DataGridTextColumn Header="COMMENTAIRE" Binding="{Binding Path=REMARQUES}"/>
</DataGrid.Columns>
</DataGrid> |
quand on est dans le sujet ça parait clair mais à expliquer c'est plus dur... j'ai 2 illustrations pour éclaircir mon explication
merci pour tout renseignement qui pourrait me faire avancer
cordialement