Having first tab selected after binding

5 posts, 0 answers
  1. Frédéric
    Frédéric avatar
    22 posts
    Member since:
    Dec 2008

    Posted 20 Apr 2011 Link to this post

    Hi,

    I have a tab control that has is ItemSource binded to a collection as shown here : http://www.telerik.com/help/silverlight/radtabcontrol-populating-binding-to-collection.html

    However, after the tabs are populated from the collection, there is no tab selected.

    I would like that after every rebind of the ItemSource, the first tab be always selected.

    I tried the property IsDefaultItemSelected="True" of the TabControl with no luck.

    Thanks

    Frederic
  2. Petar Mladenov
    Admin
    Petar Mladenov avatar
    2891 posts

    Posted 26 Apr 2011 Link to this post

    Hello Frédéric,

     
    The IsDefaultItemSelected property indicates whether the first tab item will be selected only at start up. It won't work when the Items Source is re-bound which is expected. When re-binding, you can bind the SelectedItem, SelectedIndex of the RadTabControl or the IsSelected property of the RadTabItem. Let us know if you need more info.

    Kind regards,
    Petar Mladenov
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  3. DevCraft banner
  4. Brian
    Brian avatar
    73 posts
    Member since:
    Sep 2010

    Posted 18 May 2011 Link to this post

    I have a sample project that is shows of an issue I'm having in my project.  I have the ItemsSource and SelectedItem of a TabControl bound to my view model but the SelectedItem is not getting set.  In my project, the initial load works OK but not when the ItemsSource is re-bound, the SelectedItem is never shown, just like in in my example.

    Can you explain why the SelectedItem does not get set?
    Tks.

    Here is the code:
    ViewModel
    public class MainPageViewModel : INotifyPropertyChanged
        {
            public MainPageViewModel()
            {
                this.ReloadDataCommand = new DelegateCommand(
                    delegate
                    {
                        this.LoadData();
                    },
                    delegate
                    {
                        return true;
                    });
      
                LoadData();
            }
      
            public void LoadData()
            {
                PersonList = new List<Person>();
                PersonList.Add(new Person { FirstName = "Bob", LastName="Smith", Phone="222-222-2222"});
                PersonList.Add(new Person { FirstName = "Steve", LastName = "Larson", Phone = "444-444-4444" });
                PersonList.Add(new Person { FirstName = "Mark", LastName = "Black", Phone = "555-555-55555" });
                PersonList.Add(new Person { FirstName = "Sandy", LastName = "Nelson", Phone = "777-777-7777" });
                PersonList.Add(new Person { FirstName = "Paul", LastName = "Anderson", Phone = "888-888-88888" });            
      
                NotifyPropertyChanged("PersonList");
      
                SelectedPerson = PersonList[0];
                NotifyPropertyChanged("SelectedPerson");
            }
      
            public List<Person> PersonList { get; set; }
            public Person SelectedPerson { get; set; }
      
            #region Commands
      
            public DelegateCommand ReloadDataCommand { get; set; }
      
            #endregion
      
            #region INotifyPropertyChanged Members
            public event PropertyChangedEventHandler PropertyChanged;
      
            public void NotifyPropertyChanged(string propertyName)
            {
                var handler = this.PropertyChanged;
                if (handler != null)
                {
                    handler(this, new PropertyChangedEventArgs(propertyName));
                }
            }
            #endregion
        }
      
        public class Person
        {
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string Phone { get; set; }
      
        }

    View:
    <UserControl x:Class="TabControlTest.MainPage"
        mc:Ignorable="d"
        d:DesignHeight="368" d:DesignWidth="927">
      
        <UserControl.Resources>
      
            <DataTemplate x:Key="RadTabHeaderTemplate">
                <TextBlock Text="{Binding LastName}" Margin="10,2,10,0" MinWidth="80" />
            </DataTemplate>
      
            <DataTemplate x:Key="ContentTemplate">
                <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                    <TextBlock Text="{Binding FirstName}" />
                    <TextBlock Text="{Binding LastName}" Margin="20,0,0,0" />
                    <TextBlock Text="{Binding Phone}" Margin="20,0,0,0" />
                </StackPanel>
            </DataTemplate>
      
        </UserControl.Resources>
          
        <Grid x:Name="LayoutRoot" Background="White">
            <StackPanel Orientation="Vertical">
              
                <telerik:RadTabControl SelectedItem="{Binding SelectedPerson, Mode=TwoWay}"
                                        ItemsSource="{Binding PersonList}"
                                        ItemTemplate="{StaticResource RadTabHeaderTemplate}"
                                        ContentTemplate="{StaticResource ContentTemplate}"
                                        DropDownDisplayMode="Collapsed" ScrollMode="Viewport"
                                        Height="Auto" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                                        Padding="10" telerik:StyleManager.Theme="Windows7"
                    <telerik:RadTabItem>
                          
                          
                    </telerik:RadTabItem>
                </telerik:RadTabControl>
                  
                <Button Content="Reload Data" Command="{Binding ReloadDataCommand}" Width="100" />
            </StackPanel>
      
        </Grid>
    </UserControl>
  5. Petar Mladenov
    Admin
    Petar Mladenov avatar
    2891 posts

    Posted 24 May 2011 Link to this post

    Hello Brian,

    I managed to reproduce your issue with the official Q1 2011 dlls (0315). The good news is that we have re-factored our selection logic recently and this appears to be fixed with the Q1 2011 SP1 version ( 0419). You can examine it in the attached solution. Let us know if you need further assistance.

    All the best,
    Petar Mladenov
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  6. Brian
    Brian avatar
    73 posts
    Member since:
    Sep 2010

    Posted 26 May 2011 Link to this post

    At first test, this appears to be fixed with the latest version as you said. 

    Thanks for getting this fixed!
Back to Top
DevCraft banner