This is a migrated thread and some comments may be shown as answers.

I am getting that value does not fall into range exception

1 Answer 52 Views
TileView
This is a migrated thread and some comments may be shown as answers.
Syed Asif
Top achievements
Rank 1
Syed Asif asked on 05 Jun 2013, 10:32 AM
The code that you are seeing is part of and Education ERP product which is already in production. We recently decided to move our code to SL5 but when we changed the dll's from SL4 to SL5 (We have a licensed version of Telerik controls for SL4 and for SL5 we are using the trial version. Once we find things satisfactory we will buy license from you), the RadTreeView component stopped working and started giving the error that I mentioned previously. At present I am looking into how we can create a small demo app that can reproduce the same error. But it would definitely take some time. But meanwhile can you also check and let me know if it is some known issue? Or could it be some problem with the versioning etc


<tileview:TileToFluideStateConverter x:Key="tileConverter" />

        <DataTemplate x:Key="ItemTemplate">

            <TextBlock Text="{Binding HeaderText}" />

        </DataTemplate>

        <DataTemplate x:Key="ContentTemplate">

            <telerik:RadFluidContentControl ContentChangeMode="Manual"TransitionDuration="0:0:.5"                    

                                  State="{Binding State, Converter={StaticResourcetileConverter}}">

                <telerik:RadFluidContentControl.SmallContent>

                    <telerik:RadBusyIndicator IsBusy="{Binding Path=IsBusy}">

                        <ContentControl Content="{Binding Path=SmallContent}"/>

                    </telerik:RadBusyIndicator>

                </telerik:RadFluidContentControl.SmallContent>

                <telerik:RadFluidContentControl.Content>

                    <telerik:RadBusyIndicator IsBusy="{Binding Path=IsBusy}">

                        <ContentControl Content="{Binding Path=NormalContent}"/>

                    </telerik:RadBusyIndicator>

                </telerik:RadFluidContentControl.Content>

                <telerik:RadFluidContentControl.LargeContent>

                    <telerik:RadBusyIndicator IsBusy="{Binding Path=IsBusy}">

                        <ContentControl Content="{Binding Path=LargeContent}"/>

                    </telerik:RadBusyIndicator>

                </telerik:RadFluidContentControl.LargeContent>

            </telerik:RadFluidContentControl>

        </DataTemplate>

    </base:PhoenixBaseRibbonView.Resources>

    <Grid>

        <!--<ScrollViewer  HorizontalScrollBarVisibility="Auto"  VerticalAlignment="Stretch" HorizontalAlignment="Stretch" VerticalScrollBarVisibility="Auto" Padding="0" BorderThickness="0">-->

        <telerik:RadTileView x:Name="tileView" 

                                 VerticalAlignment="Stretch" HorizontalAlignment="Stretch"

                                 PreservePositionWhenMaximized="True"telerik:TileViewPanel.IsVirtualized="True"

                                 IsAutoScrollingEnabled="True"TileStateChangeTrigger="SingleClick"

                                 ColumnsCount="2"

                                ItemTemplate="{StaticResource ItemTemplate}"ContentTemplate="{StaticResource ContentTemplate}" ItemsSource="{Binding Path=RichParts}"

                                 MaximizeMode="One">

        </telerik:RadTileView>

        <!--</ScrollViewer>-->

    </Grid>

  void tileView_TileStateChanged(object sender, Telerik.Windows.RadRoutedEventArgs e)

        {

            RadTileViewItem item = e.OriginalSource as RadTileViewItem;

            if (item != null)

            {

                var viewmodel = ((RadFluidContentControl)item.Content).DataContext asIPhoenixBaseRichletView;

                if (viewmodel != null)

                {

                    viewmodel.State = item.TileState;

                }

            }

        }

        void RichPartList_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)

        {

            if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)

            {

                try

                {

                    foreach (PhoenixBaseRichletView richlet in e.NewItems)

                    {

                        RadTileViewItem item = new RadTileViewItem();

                        item.Header = richlet.HeaderText;

                        var contentTemplate = this.Resources["ContentTemplate"] asDataTemplate;

                        var ctrl = contentTemplate.LoadContent() as RadFluidContentControl;

                        ctrl.DataContext = richlet;

                        item.Content = ctrl;

                        this.tileView.Items.Add(item);

                    }

                }

                catch (Exception ex)

                {

                    this.Error = ex;

                }

            }

        }

1 Answer, 1 is accepted

Sort by
0
Zarko
Telerik team
answered on 06 Jun 2013, 01:42 PM
Hi Syed,
I'm not sure what the exact reason for this issue might be because I don't have all of you code but I noticed a couple of things:
- you haven't registered the TileStateChanged event handler - TileStateChanged="tileView_TileStateChanged"
- in your tileView_TileStateChanged handler you're trying to get the business object like this:
var viewmodel = ((RadFluidContentControl)item.Content).DataContext as IPhoenixBaseRichletView;
but you could do it like this:
var viewmodel = this.tileView.ItemContainerGenerator.ItemFromContainer(item) as IPhoenixBaseRichletView;
or
var viewmodel = item.Content as IPhoenixBaseRichletView;
- in the RichPartList_CollectionChanged handler you're trying to add a new item directly to your tileView's items collection(this.tileView.Items.Add(item)) while you're using ItemsSouce(ItemsSource="{Binding Path=RichParts}") and this is not correct.
I've used your code snippets to create a sample project and everything seems to work fine after this changes so could you please examine it and if you have further questions feel free to ask.

Regards,
Zarko
Telerik

Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

Tags
TileView
Asked by
Syed Asif
Top achievements
Rank 1
Answers by
Zarko
Telerik team
Share this question
or