RadPanelBar Selected Event

2 posts, 0 answers
  1. Mike Ro
    Mike Ro avatar
    2 posts
    Member since:
    Jun 2012

    Posted 29 May 2010 Link to this post

    Hi.

    I have a problem with setting up Selected event for RadPanelBar.
    My aim is to catch an event when RadPanelBarItem is selected.

    I am using DataTemplate for Item, and EntityObject entityObject containing a List<Employee>

    XAML:
    Resources:
    <Window.Resources>   
     
    <DataTemplate x:Key="RadPanelBarItemTemplate">   
     
    <StackPanel MouseLeftButtonDown="pnlEmployee_MouseLeftButtonDown" Background="Transparent" Name="pnlEmployee" Orientation="Horizontal" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">   
     
    <Image Source="{Binding Photo}" Stretch="Uniform" HorizontalAlignment="Left" VerticalAlignment="Stretch" Width="50" Height="50"></Image> 
     
    <Label Name="lblEmployeeName" Height="50" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Content="{Binding Name}" />   
     
    <Label Name="lblEmployeeID" Content="{Binding Id}" Visibility="Hidden" />   
     
    </StackPanel>   
     
    </DataTemplate >   
     
    </Window.Resources>   
     
     

     


    RadPanelBar: 

     

    <telerik:RadPanelBar Grid.Row="1" Name="rpbLeftMenu" ExpandMode="Single" Selected="rpbLeftMenu_Selected">   
     
    <telerik:RadPanelBarItem Name="rpbiEmployee" IsExpanded="True" ItemsSource="{Binding Employees}" ItemTemplate="{StaticResource RadPanelBarItemTemplate}">   
     
    <telerik:RadPanelBarItem.Header>   
     
    <StackPanel HorizontalAlignment="Left">   
     
    <Label Name="lblEmployees" Content="Сотрудники"></Label>   
     
    <TextBox HorizontalAlignment="Left" Name="txtEmployeesFilter" TextChanged="txtEmployeesFilter_TextChanged" Width="200"></TextBox>   
     
    </StackPanel>   
     
    </telerik:RadPanelBarItem.Header>   
     
    </telerik:RadPanelBarItem> 
     
    ...  
     
    </telerik:RadPanelBar>   
     

     

     

    CodeBehind:

    Getting data from DB:

    try 
     
    {   
     
    IMSSDataClassesDataContext db = new IMSSDataClassesDataContext();   
     
    var query = from employees in db.imss_employees   
                orderby employees.emp_lastname   
                select new { employees.emp_ID };   
     
    foreach (var emp in query)   
    {  
    var em = db.get_employee_name_by_id(emp.emp_ID).First();   
    entityObject.Employees.Add(  
    new Employee(em.name, emp.emp_ID, ShowEmpImage(emp.emp_ID)));   
    }  
     
    rpbLeftMenu.DataContext = entityObject;  
     
    }  
    catch (Exception ex)   
    {  
    ...  
    }  
     


    My solution for selecting Item event is to handle a StackPanel MouseLeftButtonDown event:

     

    private void pnlEmployee_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)   
    {  
    StackPanel sp = sender as StackPanel;   
    Label lb = sp.FindName("lblEmployeeID"as Label;   
    this.Title = Convert.ToString(lb.Content); //just for testing purposes   
    }  
     
     

    But it works only when clicking correctly inside a stackpanel.

    I want something like this:

      

    <telerik:RadPanelBarItem Selected="RadPanelBarItem_Selected">   
    <telerik:RadPanelBarItem.Header>   
    <StackPanel Orientation="Horizontal" Margin="5">   
    <TextBlock Text="BMW 128i Coupe" Margin="15 10 0 0" />   
    </StackPanel>   
    </telerik:RadPanelBarItem.Header>   
    </telerik:RadPanelBarItem>   
       
    private void RadPanelBarItem_Selected(object sender, Telerik.Windows.RadRoutedEventArgs e)   
    {  
    ...  
    }  
     

     

     

     

    But I can't set Selected event handler for Items which are binded like mine:
    ItemsSource="{Binding Employees}" 

    How should I catch selection of Items?

    Best regards,

  2. Mike Ro
    Mike Ro avatar
    2 posts
    Member since:
    Jun 2012

    Posted 30 May 2010 Link to this post

    Finally, I have found solution:

     

    private void rpbiEmployee_Selected(object sender, Telerik.Windows.RadRoutedEventArgs e)  
            {  
                RadPanelBarItem rpbi = e.Source as RadPanelBarItem;  
                RadPanelBar cd = rpbi.Parent as RadPanelBar;  
     
                Employee sel_emp = cd.SelectedItem as Employee;  
                if (sel_emp != null)  
                {  
                    Title = sel_emp.Name;  
                }  
            } 

     

     

     

     

     

  3. UI for WPF is Visual Studio 2017 Ready
Back to Top