Posted 31 Jan 2012
Link to this post
There is one more bug in my solution.Don't worry i solved that either :) When you use the solution above you will notice that when adding new row to the collection all cities unbound(picture before.png). The solution is seperate the DataTemplate GridViewDataColumn.CellTemplate and GridViewDataColumn.CellEditTemplate.Then in the GridViewDataColumn.CellTemplate change the itemsource binding city combobox to <ItemsSource="{Binding SelectedItem.Cities, ElementName=CountryCombobox,Mode=OneTime}"> thats it. The new
result seem like picture after.png :) I hope this helps. Here is code for RadGridView...
(
<telerik:RadGridView x:Name="RadGridViewCustomer"
IsFilteringAllowed="True"
ItemsSource="{Binding CustomersList, Mode=TwoWay}"
AutoGenerateColumns="False" Margin="10,35,10,5"
CanUserInsertRows="False"
CanUserDeleteRows="False"
AlternationCount="2"
SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"
RowDetailsVisibilityMode="VisibleWhenSelected" >
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding ID}"
Header="ID" >
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ID}"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding Name}"
Header="Name" IsFilterable="True">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding Surname}"
IsFilterable="True"
Header="Surname">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Surname}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<TextBox Text="{Binding Surname, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding Phone}"
IsFilterable="True"
Header="Phone">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Phone}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<TextBox Text="{Binding Phone, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn
DataMemberBinding="{Binding BirthDate}"
IsFilterable="True"
Header="BirthDate">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding BirthDate, StringFormat=\{0:d\}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<telerik:RadDatePicker SelectedValue="{Binding BirthDate, Mode=TwoWay, StringFormat=\{0:d\}, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn
Header="Country - City">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<telerik:RadComboBox
MinWidth="80"
x:Name="CountryCombobox"
Style="{StaticResource RadComboBoxStyle1}"
IsFilteringEnabled="True"
CanAutocompleteSelectItems="True"
IsEditable="False"
EmptyText="Choose Country.."
Background="Transparent"
ClearSelectionButtonVisibility="Visible"
ClearSelectionButtonContent="Clear Selection.."
SelectedValue ="{Binding CountryID, Mode=TwoWay}"
ItemsSource="{Binding Country.CountriesList, Source={StaticResource Locator},UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="CountryName"
SelectedValuePath="ID"
/>
<telerik:RadComboBox
MinWidth="80"
Style="{StaticResource RadComboBoxStyle1}"
IsFilteringEnabled="True"
CanAutocompleteSelectItems="True"
IsEditable="False"
EmptyText="Choose City.."
Background="Transparent"
SelectedValue ="{Binding CityID, Mode=TwoWay}"
ItemsSource="{Binding SelectedItem.Cities, ElementName=CountryCombobox,Mode=OneTime}"
DisplayMemberPath="CityName"
SelectedValuePath="ID"
/>
</StackPanel>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<telerik:RadComboBox
MinWidth="80"
x:Name="CountryEditCombobox"
IsFilteringEnabled="True"
CanAutocompleteSelectItems="True"
IsEditable="False"
EmptyText="Choose Country.."
Background="Transparent"
ClearSelectionButtonVisibility="Visible"
ClearSelectionButtonContent="Clear Country.."
SelectedValue ="{Binding CountryID, Mode=TwoWay}"
ItemsSource="{Binding Country.CountriesList, Source={StaticResource Locator}}"
DisplayMemberPath="CountryName"
SelectedValuePath="ID"
/>
<telerik:RadComboBox
MinWidth="80"
IsFilteringEnabled="True"
Margin="5,0,0,0"
CanAutocompleteSelectItems="True"
IsEditable="False"
EmptyText="Choose City.."
Background="Transparent"
ClearSelectionButtonVisibility="Visible"
ClearSelectionButtonContent="Clear City.."
SelectedValue ="{Binding CityID, Mode=TwoWay}"
ItemsSource="{Binding SelectedItem.Cities, ElementName=CountryEditCombobox}"
DisplayMemberPath="CityName"
SelectedValuePath="ID"
/>
</StackPanel>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
</telerik:RadGridView.Columns>
</telerik:RadGridView> )