Hi,
I currently trying to convert a Winforms Project to WPF Project. As step one I need to create a Tabbed MDI container in WPF in which each new RadItemTab will contain a WindowsFormHost which will again contain the existing WinForm UserControl.
We got the RadControl to work up to our expectation but unable to include the WindowsFormHost.
I'm pasting the sample of what i was trying out would really appreciate your help on this.
Download
Full Project
Or
AnotherTab.xaml
AnotherTab.xaml.cs
 
 
 
 
 
 
 
 
 
 
 
RoutedEventHelper.cs
 
 
                                I currently trying to convert a Winforms Project to WPF Project. As step one I need to create a Tabbed MDI container in WPF in which each new RadItemTab will contain a WindowsFormHost which will again contain the existing WinForm UserControl.
We got the RadControl to work up to our expectation but unable to include the WindowsFormHost.
I'm pasting the sample of what i was trying out would really appreciate your help on this.
Download
Full Project
Or
AnotherTab.xaml
<UserControl x:Class="FcWpfTabControl.AnotherTab"             xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"             xmlns:xx="clr-namespace:FcWpfTabControl"             mc:Ignorable="d"             d:DesignHeight="300" d:DesignWidth="300">    <UserControl.Resources>        <Style x:Key="CloseButton" TargetType="{x:Type Button}">            <Setter Property="Template">                <Setter.Value>                    <ControlTemplate TargetType="Button">                        <ControlTemplate.Triggers>                            <Trigger Property="IsMouseOver" Value="True">                                <Trigger.EnterActions>                                    <BeginStoryboard x:Name="MouseOverBeginStoryboard">                                        <Storyboard>                                            <ObjectAnimationUsingKeyFrames                                                    Storyboard.TargetProperty="(UIElement.Visibility)"                                                    Storyboard.TargetName="FocusEllipse">                                                <DiscreteObjectKeyFrame KeyTime="0">                                                    <DiscreteObjectKeyFrame.Value>                                                        <Visibility>Visible</Visibility>                                                    </DiscreteObjectKeyFrame.Value>                                                </DiscreteObjectKeyFrame>                                            </ObjectAnimationUsingKeyFrames>                                            <ColorAnimation Duration="0" To="LightGray"                                                    Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"                                                    Storyboard.TargetName="FocusEllipse" />                                        </Storyboard>                                    </BeginStoryboard>                                </Trigger.EnterActions>                                <Trigger.ExitActions>                                    <StopStoryboard BeginStoryboardName="MouseOverBeginStoryboard" />                                </Trigger.ExitActions>                            </Trigger>                            <Trigger Property="IsPressed" Value="True">                                <Trigger.EnterActions>                                    <BeginStoryboard x:Name="IsPressedBeginStoryboard">                                        <Storyboard>                                            <ObjectAnimationUsingKeyFrames                                                    Storyboard.TargetProperty="(UIElement.Visibility)"                                                    Storyboard.TargetName="FocusEllipse">                                                <DiscreteObjectKeyFrame KeyTime="0">                                                    <DiscreteObjectKeyFrame.Value>                                                        <Visibility>Visible</Visibility>                                                    </DiscreteObjectKeyFrame.Value>                                                </DiscreteObjectKeyFrame>                                            </ObjectAnimationUsingKeyFrames>                                            <ColorAnimation Duration="0" To="DarkGray"                                                    Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"                                                    Storyboard.TargetName="FocusEllipse" />                                        </Storyboard>                                    </BeginStoryboard>                                </Trigger.EnterActions>                                <Trigger.ExitActions>                                    <StopStoryboard BeginStoryboardName="IsPressedBeginStoryboard" />                                </Trigger.ExitActions>                            </Trigger>                        </ControlTemplate.Triggers>                        <Grid Background="Transparent" Width="14" Height="14">                            <Ellipse x:Name="FocusEllipse" Fill="#FFF13535" Visibility="Collapsed" />                            <ContentPresenter x:Name="ContentPresenter"                                    Content="{TemplateBinding Content}" HorizontalAlignment="Center"                                    VerticalAlignment="Center" />                        </Grid>                    </ControlTemplate>                </Setter.Value>            </Setter>        </Style>        <Style x:Key="ClosableStyle" TargetType="telerik:RadTabItem">            <Setter Property="HeaderTemplate">                <Setter.Value>                    <DataTemplate>                        <Grid>                            <Grid.ColumnDefinitions>                                <ColumnDefinition Width="*" />                                <ColumnDefinition Width="Auto" />                            </Grid.ColumnDefinitions>                                <TextBlock Text="{Binding Title}" />                                <telerik:RadButton Grid.Column="1" Style="{StaticResource CloseButton}"                                                Width="16" Height="16"                                    Margin="10,0,0,0" ToolTipService.ToolTip="Remove item"                                              xx:RoutedEventHelper.EnableRoutedClick="True"                                              Padding="0" >                                <ContentControl>                                        <Path Data="M0,0 L6,6 M6, 0 L0,6" Stroke="Black" StrokeThickness="1"                                SnapsToDevicePixels="True" />                                </ContentControl>                            </telerik:RadButton>                                          </Grid>                    </DataTemplate>                </Setter.Value>            </Setter>            <Setter Property="ContentTemplate">                <Setter.Value>                    <!--<ContentControl Content="{Binding Content}"/>-->                    <DockPanel Name="panel1" LastChildFill="True">                        <WindowsFormsHost Name="wfHost" DockPanel.Dock="Left" Child="{Binding Content}"/>                    </DockPanel>                </Setter.Value>            </Setter>        </Style>    </UserControl.Resources>    <Grid x:Name="LayoutRoot" Background="White">        <telerik:RadTabControl x:Name="tabControl" ItemContainerStyle="{StaticResource ClosableStyle}">        </telerik:RadTabControl>    </Grid></UserControl>AnotherTab.xaml.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using Telerik.Windows.Controls;using System.Collections.ObjectModel;using System.Windows.Forms.Integration;using System.Windows.Forms;namespace FcWpfTabControl{    /// <summary>    /// Interaction logic for AnotherTab.xaml    /// </summary>    public partial class AnotherTab : System.Windows.Controls.UserControl    {        public AnotherTab()        {            InitializeComponent();                         EventManager.RegisterClassHandler(typeof(RadTabItem), RoutedEventHelper.CloseTabEvent, new RoutedEventHandler(OnCloseClicked));        }        ObservableCollection<TabItemModel> tabItemsModel = new ObservableCollection<TabItemModel>();        public void OnCloseClicked(object sender, RoutedEventArgs e)        {            var tabItem = sender as RadTabItem;            // Remove the item from the collection the control is bound to            tabItemsModel.Remove(tabItem.DataContext as TabItemModel);        }        public void CreateTabItem(UserControl uc)        {            // Create items:            RadTabItem Item1 = new RadTabItem();            WindowsFormsHost wfh = new WindowsFormsHost();            wfh.Child = uc;            Item1.Content = wfh;            Item1.Header = "Tab1";            TabItemModel tb = new TabItemModel("Item", uc);           // tb.userControl = uc;            tabItemsModel.Add(tb);           // tabItemsModel[0].Content.Child = uc;            tabControl.ItemsSource = tabItemsModel;        }    }    public class TabItemModel    {                public TabItemModel(string stringTitle, UserControl uc)        {            WindowsFormsHost wfh = new WindowsFormsHost();           //wfh.Child = uc;            Title = stringTitle;            Content = wfh;                     }        public String Title        {            get;            set;        }        public UserControl userControl        {            get;            set;        }        public WindowsFormsHost Content        {            get;            set;        }    }}RoutedEventHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Telerik.Windows.Controls;using System.Windows;using System.Windows.Controls;using Telerik.Windows;namespace FcWpfTabControl{    public class RoutedEventHelper    {        //Create the routed event:        public static readonly RoutedEvent CloseTabEvent = EventManager.RegisterRoutedEvent(            "CloseTab",            RoutingStrategy.Bubble,            typeof(RoutedEventHandler),            typeof(RoutedEventHelper));        //Add an attached property:        public static bool GetEnableRoutedClick(DependencyObject obj)        {            return (bool)obj.GetValue(EnableRoutedClickProperty);        }        public static void SetEnableRoutedClick(DependencyObject obj, bool value)        {            obj.SetValue(EnableRoutedClickProperty, value);        }        // Using a DependencyProperty as the backing store for EnableRoutedClick.        // This enables animation, styling, binding, etc...        public static readonly DependencyProperty EnableRoutedClickProperty = DependencyProperty.RegisterAttached(            "EnableRoutedClick",            typeof(bool),            typeof(RoutedEventHelper),            new System.Windows.PropertyMetadata(OnEnableRoutedClickChanged));        private static void OnEnableRoutedClickChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)        {            var newValue = (bool)e.NewValue;            var button = sender as Button;            if (button == null)                return;            if (newValue)                button.Click += new RoutedEventHandler(OnButtonClick);        }        static void OnButtonClick(object sender, RoutedEventArgs e)        {            var control = sender as Control;            if (control != null)            {                control.RaiseEvent(new RadRoutedEventArgs(RoutedEventHelper.CloseTabEvent, control));            }        }    }}