In my project I have 3 RadSplitContainer and I would like if one of these not able to resize, I dont want to appear the resize arrow (this is a panel which contains buttons).
I tried this, but this disable all container resizing:
<telerik:RadDocking.Resources>   <Style TargetType="telerik:RadGridResizer">      <Setter Property="IsHitTestVisible" Value="False" />   </Style></telerik:RadDocking.Resources>I tried if set the min/max height, but when I load back the layout the panel will be resizable again (I use layout save and load).
The base of the code:
<telerikDocking:RadDocking >            <telerikDocking:RadDocking.DocumentHost>                   <telerikDocking:RadSplitContainer>                    <telerikDocking:RadPaneGroup>                        <telerikDocking:RadPane BorderThickness="0" CanUserClose="False" CanFloat="False" CanUserPin="False" >                            <!-Content->                        </telerikDocking:RadPane>                                                 <telerikDocking:RadPane BorderThickness="0" CanUserClose="False" CanFloat="False" CanUserPin="False" >                            <!-Content->                        </telerikDocking:RadPane>                                                 <telerikDocking:RadPane BorderThickness="0" CanUserClose="False" CanFloat="False" CanUserPin="False" >                            <!--Content-->                            </telerikDocking:RadPane>                        <telerikDocking:RadPane BorderThickness="0" CanUserClose="False" CanFloat="False" CanUserPin="False" >                            <!-Content->                        </telerikDocking:RadPane>                    </telerikDocking:RadPaneGroup>                                     </telerikDocking:RadSplitContainer>            </telerikDocking:RadDocking.DocumentHost>            <telerikDocking:RadSplitContainer InitialPosition="DockedBottom" telerikDocking:DockingPanel.InitialSize="400,200">                <telerikDocking:RadPaneGroup>                    <telerikDocking:RadPane CanUserClose="False" CanFloat="True" CanUserPin="True" IsPinned="True">                        <!-Content->                    </telerikDocking:RadPane>                </telerikDocking:RadPaneGroup>            </telerikDocking:RadSplitContainer>            <telerikDocking:RadSplitContainer InitialPosition="DockedBottom" Height="60" VerticalAlignment="Center" VerticalContentAlignment="Center" MaxHeight="60" MinHeight="60">                <telerikDocking:RadPaneGroup Padding="0" VerticalAlignment="Center" VerticalContentAlignment="Center" >                    <telerikDocking:RadPane PaneHeaderVisibility="Collapsed" BorderThickness="0" CanUserClose="False" CanFloat="False" Height="60" CanDockInDocumentHost="False" CanUserPin="False" IsPinned="True"  >                        <!--Not dockable not resizable content-->                    </telerikDocking:RadPane>                </telerikDocking:RadPaneGroup>            </telerikDocking:RadSplitContainer>
</telerikDocking:RadDocking>Is there any possibility to disable resizing, or how can I solve this problem?
Thanks,
Rob
8 Answers, 1 is accepted
What I can suggest you in order to be able to disable the resizing of only one particular SplitContainer, would be to get the resizer in the code behind and set its IsHitTestVisible property to false. You can do that in the Loaded event handler of the Docking control, however in your case this will only affect the Resizer above the SplitContainer - you might also need disable the GridResizer of the SplitContainer below the desired one. I have prepared and attached a sample project demonstrating the explained and disabling the both GridResizers, note that you would also need consider the scenarios when the Panes are docked/undocked and manually disable the GridResizers again.
Hope this helps.
Regards,
Kalin
Telerik
Thank you for your reply, the code is works, BUT unfortunately not works for me because I use the RadDocking.SaveLayout/LoadLayout, and when I load the saved layout, I can change the height of my "not resizable content".
Any idea, what is the problem with it?
Thanks,
Rob
Can you share some more details regarding the exact problem? I tested the same same scenario using the Save/Load mechanism of the control and was not able to resize the non resizable content after the reload as expected.
I'm looking forward to hearing from you.
Regards,
Kalin
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
I create a test app based on your code and its not working, the NonResizable is resizable after reload.
Here are the codes:
MainWindow.xaml
<Window x:Class="gridtest2.MainWindow"        xmlns:telerik="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Docking"        Title="MainWindow" Height="350" Width="525" Closed="MainWindow_OnClosed" Loaded="MainWindow_OnLoaded">    <Grid>        <telerik:RadDocking Loaded="FrameworkElement_OnLoaded" x:Name="radDocking">            <telerik:RadDocking.DocumentHost>                <telerik:RadSplitContainer>                    <telerik:RadPaneGroup>                        <telerik:RadPane telerik:RadDocking.SerializationTag="Pane1" BorderThickness="0" CanUserClose="False" CanFloat="False" CanUserPin="False" Header="1" >                        </telerik:RadPane>                        <telerik:RadPane telerik:RadDocking.SerializationTag="Pane2" BorderThickness="0" CanUserClose="False" CanFloat="False" CanUserPin="False" Header="2">                        </telerik:RadPane>                        <telerik:RadPane telerik:RadDocking.SerializationTag="Pane3" BorderThickness="0" CanUserClose="False" CanFloat="False" CanUserPin="False" Header="3">                        </telerik:RadPane>                        <telerik:RadPane telerik:RadDocking.SerializationTag="Pane4" BorderThickness="0" CanUserClose="False" CanFloat="False" CanUserPin="False" Header="4">                        </telerik:RadPane>                    </telerik:RadPaneGroup>                </telerik:RadSplitContainer>            </telerik:RadDocking.DocumentHost>            <telerik:RadSplitContainer x:Name="splitContainer" InitialPosition="DockedBottom" telerik:DockingPanel.InitialSize="400,200">                <telerik:RadPaneGroup>                    <telerik:RadPane telerik:RadDocking.SerializationTag="splitCon" CanUserClose="False" CanFloat="True" CanUserPin="True" IsPinned="True">                    </telerik:RadPane>                </telerik:RadPaneGroup>            </telerik:RadSplitContainer>            <telerik:RadSplitContainer x:Name="NonResizable" InitialPosition="DockedBottom" Height="60" VerticalAlignment="Center" VerticalContentAlignment="Center" MaxHeight="60" MinHeight="60">                <telerik:RadPaneGroup Padding="0" VerticalAlignment="Center" VerticalContentAlignment="Center" >                    <telerik:RadPane telerik:RadDocking.SerializationTag="buttonPane" PaneHeaderVisibility="Collapsed" BorderThickness="0" CanUserClose="False" CanFloat="False" Height="60" CanDockInDocumentHost="False" CanUserPin="False" IsPinned="True"  >                        <StackPanel Orientation="Horizontal" Margin="5">                            <Button Height="25" Width="50" Margin="5">1</Button>                            <Button Height="25" Width="50" Margin="5">2</Button>                            <Button Height="25" Width="50" Margin="5">3</Button>                            <Button Height="25" Width="50" Margin="5">4</Button>                        </StackPanel>                    </telerik:RadPane>                </telerik:RadPaneGroup>            </telerik:RadSplitContainer>        </telerik:RadDocking>    </Grid></Window>MainWindowx.xaml.cs
using System;using System.IO;using System.IO.IsolatedStorage;using System.Windows;using Telerik.Windows.Controls.Docking;namespace gridtest2{    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();        }        private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e)        {            var resizer = this.NonResizable.Template.FindName("DockResizer", this.NonResizable) as RadGridResizer;            resizer.IsHitTestVisible = false;            //resizer = this.NonResizable.Template.FindName("DockResizer", this.splitContainer) as RadGridResizer;            //resizer.IsHitTestVisible = false;        }        private string SaveLayout()        {            string xml;            using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForAssembly())            {                using (var isoStream = storage.OpenFile("RadDocking_Layout.xml", FileMode.Create))                {                    this.radDocking.SaveLayout(isoStream);                    isoStream.Seek(0, SeekOrigin.Begin);                    StreamReader reader = new StreamReader(isoStream);                    xml = reader.ReadToEnd();                }            }            return xml;        }        private void LoadLayout()        {            using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForAssembly())            {                if (storage.FileExists("RadDocking_Layout.xml"))                {                    using (var isoStream = storage.OpenFile("RadDocking_Layout.xml", FileMode.Open))                    {                        this.radDocking.LoadLayout(isoStream);                    }                }            }        }        private void MainWindow_OnClosed(object sender, EventArgs e)        {            SaveLayout();        }        private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)        {            LoadLayout();        }    }}Am I doing something wrong?
Thanks,
Rob
Try setting a SerilizationTag to the NonResizable SplitContainer as shown below:
<telerik:RadSplitContainer x:Name="NonResizable" telerik:RadDocking.SerializationTag="NonResizableSplitContainer" InitialPosition="DockedBottom" Height="60" VerticalAlignment="Center" VerticalContentAlignment="Center" MaxHeight="60" MinHeight="60">This way the SplitContainer will be saved and loaded correctly.
Hope this helps.
Regards,
Kalin
Telerik
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.
Finally it works fine.
Thank you very much!
Best regards,
Rob
Hello,
I cannot seem to get this to work in my code. The FindName method always returns Null.
In the ProcessExecutionDocking_Loaded event handler:
var resizer = LeftVerticalSplitter.Template.FindName("DockResizer", LeftVerticalSplitter) as RadGridResizer;
Some of my XAML:
<telerikDocking:RadDocking x:Name="ProcessExecutionDocking" AllowUnsafeMode="True" Loaded="ProcessExecutionDocking_Loaded" >...
<telerikDocking:RadSplitContainer x:Name="LeftVerticalSplitter" InitialPosition="DockedLeft" Orientation="Vertical" VerticalAlignment="Stretch">...
What am I missing?
I have attached a sample project demonstrating the exact approach - please check it and let me know if you have any further issues.
Regards,
Kalin
Telerik