[WPF/XAML] Datagrid itemssource met combobox kolom

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-09 09:47

dj_vibri

int(e^x) = f(u)^n

Topicstarter
Allen,

here we are back with another question :)

Zoals andere ondertussen weten ben ik aan het testen met WPF/XAML en MVVM.
Nu zit ik al redelijk ver in het 'test programma' en nu ben ik bezig met het uitzoeken en gebruiken van een datagrid, welke kan dienen als 'factuurlijnen' op een factuur.

Per factuurlijn is het mogelijk om een specifiek BTW bedrag toe te kennen dmv een combobox (data komt uit SQL DB).

Natuurlijk hangt de Datagrid zelf vast aan een itemssource 'InvoiceLines' welke een overzicht is van de factuurlijnen voor het geselecteerde factuur (of leeg indien nieuw factuur).

Hoe kan ik mijn combobox binden met een andere datasource "WeightPercentages"?

Volgende XAML code heb ik reeds

[Code=XML]
<Toolkit:DataGrid ItemsSource="{Binding InvoiceLines}" Width="200" AutoGenerateColumns="False">
<Toolkit:DataGrid.Columns>
<Toolkit:DataGridTextColumn Header="Description" Binding="{Binding InvoiceLineDescription.DataValue}"/>
<Toolkit:DataGridTextColumn Header="Weight" Binding="{Binding InvoiceLineWeight.DataValue}"/>
<Toolkit:DataGridComboBoxColumn Header="WeightPercentage" DisplayMemberPath="{Binding Path=WeightPercentage}" ItemsSource="{Binding Path=WeightPercentages}"/>
<!--<Toolkit:DataGridComboBoxColumn Header="WeightPercentage" ItemsSource="{Binding Path=WeightPercentages}"/>-->
<Toolkit:DataGridTextColumn Header="PricePerKg" Binding="{Binding InvoiceLinePricePerKg.DataValue}"/>
<Toolkit:DataGridTextColumn Header="LineTotal" Binding="{Binding InvoiceLineLineTotal.DataValue}"/>
</Toolkit:DataGrid.Columns>
</Toolkit:DataGrid>
[/Code]

Bij het editen van de rij krijg ik effectief een combobox te zien maar zonder data. Wanneer ik een andere combobox wijzig om gebruik te maken van de tweede datasource (als test!) krijg ik data te zien (deze combobox staat dan volledig los van de datagrid). Vandaar dat mijn vermoeden gaat naar de reeds toegekende Itemssource van de datagrid.

Any thoughts?

Ook heb ik reeds geprobeerd met het volgende

[Code=XML]
<Toolkit:DataGridTemplateColumn Header="WeightPercentage">
<Toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding CurrentWeightPercentage}"/>
</DataTemplate>
</Toolkit:DataGridTemplateColumn.CellTemplate>
<Toolkit:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<StackPanel>
<ComboBox
ItemsSource="{Binding WeightPercentages}"
SelectedItem="{Binding CurrentWeightPercentage}"
IsDropDownOpen="True"
ItemTemplate="{StaticResource WeightPercentagesTemplate}"/>
</StackPanel>
</DataTemplate>
</Toolkit:DataGridTemplateColumn.CellEditingTemplate>
</Toolkit:DataGridTemplateColumn>
[/Code]

en zoals jullie hier zien kan ik ook gebruik maken van een DataTemplate welke volgende code bevat

[Code=XML]
<DataTemplate x:Key="WeightPercentagesTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding WeightPercentage}" Foreground="Black"
TextTrimming="CharacterEllipsis"
HorizontalAlignment="Stretch"
Margin="2" VerticalAlignment="Center"/>
<TextBlock Text="%" Foreground="Black"
TextTrimming="CharacterEllipsis"
VerticalAlignment="Center"
/>
</StackPanel>

</DataTemplate>
[/Code]

maar ook hier... tevergeefs.... De listproperty "WeightPercentages" wordt effectief opgevuld! :)
alleen wordt er geen data terug gegeven in de datagrid...

:(


Oplossing:

XML:
1
2
3
4
5
6
                                            <ComboBox
                                                ItemsSource="{Binding Path=DataContext.WeightPercentages,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
                                                SelectedItem="{Binding CurrentWeightPercentage}" 
                                            IsDropDownOpen="True"
                                                ItemTemplate="{StaticResource WeightPercentagesTemplate}">             
                                            </ComboBox>


Wat de RelativeSource zaken exact doen... mij een raadsel :)

[ Voor 7% gewijzigd door dj_vibri op 08-04-2010 15:08 . Reden: Opgelost ]

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.