The close button in the document host is not higlighted (hovered-button-state-doc-host.png) as opposed to panes outside the DocumentHost area (hovered-button-state.png).
The workaround is to update the MouseOver visual state of the RadButtonDocumentCloseControlTemplate:
<ControlTemplate x:Key="RadButtonDocumentCloseControlTemplate" TargetType="telerik:RadButton">
<Grid x:Name="LayoutRoot" Background="Transparent" Width="18" Height="18">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Disabled">
<Storyboard>
<DoubleAnimation Duration="0:0:0" To="0.3" Storyboard.TargetName="PathVisual" Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<DoubleAnimation Duration="0:0:0" To="1" Storyboard.TargetName="MouseOverVisual" Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="MouseOverVisual" Background="{telerik:Office2013Resource ResourceKey=EffectHighBrush}" Opacity="0"/>
<Path x:Name="PathVisual"
Width="8"
Height="8"
Data="M2.5,0 L4.5,0 4.5,2.5 7,2.5 7,4.5 4.5,4.5 4.5,7 2.5,7 2.5,4.5 0,4.5 0,2.5 2.5,2.5 z"
Stretch="Fill"
Fill="{TemplateBinding Background}"
RenderTransformOrigin="0.5,0.5"
SnapsToDevicePixels="True">
<Path.RenderTransform>
<RotateTransform Angle="-135"/>
</Path.RenderTransform>
</Path>
</Grid>
</ControlTemplate>
<Style x:Key="CustomRadButtonDocumentCloseStyle" BasedOn="{StaticResource RadButtonDocumentCloseStyle}" TargetType="telerik:RadButton">
<Setter Property="Template" Value="{StaticResource RadButtonDocumentCloseControlTemplate}"/>
</Style>
<ControlTemplate x:Key="RadPaneGroupDocumentHostControlTemplate" TargetType="telerik:RadPaneGroup">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Disabled"/>
<VisualState x:Name="Normal"/>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused"/>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
<VisualStateGroup x:Name="AutoCollapseStates">
<VisualState x:Name="SingleItem"/>
<VisualState x:Name="TwoOrMoreItems"/>
</VisualStateGroup>
<VisualStateGroup x:Name="PaneHeaderVisibilityStates">
<VisualState x:Name="PaneHeaderHidden"/>
<VisualState x:Name="PaneHeaderVisible"/>
</VisualStateGroup>
<VisualStateGroup x:Name="ResizerStates">
<VisualState x:Name="ResizerLeft">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="Visibility" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="(Grid.RowSpan)" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<sys:Int32>3</sys:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="Placement" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Dock>Left</Dock>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation BeginTime="00:00:00" From="4" To="4" Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="MinWidth"/>
</Storyboard>
</VisualState>
<VisualState x:Name="ResizerTop">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="Visibility" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="(Grid.ColumnSpan)" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<sys:Int32>2</sys:Int32>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="Placement" Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Dock>Top</Dock>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation BeginTime="00:00:00" From="4" To="4" Storyboard.TargetName="DockResizer" Storyboard.TargetProperty="MinHeight"/>
</Storyboard>
</VisualState>
<VisualState x:Name="HideResizer"/>
</VisualStateGroup>
<VisualStateGroup x:Name="DropDownDisplayStates">
<VisualState x:Name="DropDownButtonCollapsed"/>
<VisualState x:Name="DropDownButtonVisible">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="DropDownButtonElement" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<dock:RadGridResizer x:Name="DockResizer" Placement="Left" ShowsPreview="True" Visibility="Collapsed"/>
<Grid x:Name="ItemsContainer" Grid.Row="1" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<RepeatButton x:Name="LeftScrollButtonElement" Visibility="{Binding ComputedHorizontalScrollBarVisibility, ElementName=ScrollViewerElement}" Style="{StaticResource RepeatButtonScrollLeftStyle}"/>
<ScrollViewer x:Name="ScrollViewerElement" Grid.Column="1" HorizontalScrollBarVisibility="{Binding (ScrollViewer.HorizontalScrollBarVisibility), RelativeSource={RelativeSource TemplatedParent}}">
<ScrollViewer.Template>
<ControlTemplate TargetType="ScrollViewer">
<ScrollContentPresenter x:Name="ScrollContentPresenter"/>
</ControlTemplate>
</ScrollViewer.Template>
<ItemsPresenter x:Name="ItemsPresenterElement"/>
</ScrollViewer>
<RepeatButton x:Name="RightScrollButtonElement"
Grid.Column="2"
Visibility="{Binding ComputedHorizontalScrollBarVisibility, ElementName=ScrollViewerElement}"
Style="{StaticResource RepeatButtonScrollRightStyle}"/>
<telerik:RadDropDownButton x:Name="DropDownButtonElement"
Grid.Column="3"
Visibility="Collapsed"
IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
DropDownPlacement="Bottom"
DropDownButtonPosition="Left"
Style="{StaticResource DropDownButtonDocumentDropDownStyle}"
Focusable="False">
<telerik:RadDropDownButton.DropDownContent>
<telerikTabControl:DropDownMenu x:Name="DropDownMenuElement"
StaysOpen="False"
IconColumnWidth="0"
Placement="Bottom"
ItemTemplate="{TemplateBinding ItemDropDownContentTemplate}"
ItemTemplateSelector="{TemplateBinding ItemDropDownContentTemplateSelector}"
DisplayMemberPath="{TemplateBinding DropDownDisplayMemberPath}"/>
</telerik:RadDropDownButton.DropDownContent>
</telerik:RadDropDownButton>
<telerik:RadButton x:Name="CloseButton"
Grid.Column="4"
Command="telerik:RadDockingCommands.Close"
Style="{StaticResource CustomRadButtonDocumentCloseStyle}"
Visibility="{Binding IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource BooleanToVisibilityConverter}}"/>
</Grid>
<Grid Grid.Row="2" Grid.Column="1" Background="{TemplateBinding Background}" Margin="0 -1 0 0">
<Rectangle StrokeThickness="1" Stroke="{telerik:Office2013Resource ResourceKey=HighDarkBrush}"/>
<Rectangle Stroke="{telerik:Office2013Resource ResourceKey=AccentBrush}" StrokeThickness="1" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedPane.IsActive, Converter={StaticResource BooleanToVisibilityConverter}}"/>
<Rectangle Margin="1" StrokeThickness="3" Stroke="{telerik:Office2013Resource ResourceKey=AccentBrush}" Opacity="0.3"/>
<Grid Margin="5">
<ContentPresenter x:Name="ContentElement"
Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsContentPreserved, Converter={StaticResource InvertedBooleanToVisibilityConverter}}"
ContentTemplate="{TemplateBinding SelectedContentTemplate}"
ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}"/>
<Grid x:Name="ContentElementsPanel" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsContentPreserved, Converter={StaticResource BooleanToVisibilityConverter}}"/>
</Grid>
</Grid>
</Grid>
</ControlTemplate>
<Style BasedOn="{StaticResource RadPaneGroupStyle}" TargetType="telerik:RadPaneGroup">
<Setter Property="DocumentHostTemplate" Value="{StaticResource RadPaneGroupDocumentHostControlTemplate}"/>
</Style>
The fix for this issue will be available in the next LIB version (2018.3.1022) expected on Monday, October 22.
Having Problems with unreadable Tabs in RadPaneGroup: TabsSqueeze.png
I think I found a Solution with OverflowMode and ScrollViewer:
<telerik:RadPaneGroup x:Name="DocumentGroup" ScrollViewer.HorizontalScrollBarVisibility="Auto" OverflowMode="Scroll">
Problem:
After Loading Layout the OverflowMode is not respected anymore.
I found this ticket in Silverlight, what discribes the Problem and is approved: Docking: I would like OverflowMode to work for all RadPaneGroup in xaml/codebehind and this be persisted through SaveLayout/LoadLayout
And i found this documentation, which say, using OverflowMode can lead to unexpected behaviors:
https://docs.telerik.com/devtools/wpf/controls/raddocking/general-information/not-supported-properties
so i report this as a feature instead of a bug.
Please sea atteched an example project: TabWrapProblem.zip
Usage: Save and than Load the Layout -> Scrolling of tabs break
Hello,
I've got an issue and feel like it link to RadComboBox control.
I've got an application which displays a RadDocking with multiple elements. Some of them are RadCombobBox and they get their value from a view model.
Sometimes, and quite ofen, I've got an exception : "NullReferenceException occured in PresentationCore.dl" without more information... I can't find the origin of this exception since theis was thrown by an external code.
The awkward thing is that, when I put some breakpoints, I don't have the exception. It seems like there is a temporisation problem.
Here is an exemple of my view model code for a RadComboBox component :
private IEnumerable<EnumMemberViewModel> _videoTypes;
public IEnumerable<EnumMemberViewModel> VideoTypes
{
get
{
if (_videoTypes == null)
{
_videoTypes = EnumDataSource.FromType<EVideoType>();
}
return _videoTypes;
}
}
private EnumMemberViewModel _currentVideoType;
public EnumMemberViewModel CurrentVideoType
{
get
{
return _currentVideoType;
}
set
{
if (_currentVideoType != value)
{
_currentVideoType = value;
OnPropertyChanged(() => CurrentVideoType);
AcquireVideo.InvalidateCanExecute();
}
}
}And here my xaml code for my view (if it can help):
<UserControl x:Class="AltosIHM.SessionControlPaneRadDocking"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local="clr-namespace:AltosIHM"
xmlns:resx="clr-namespace:AltosIHM.Properties"
xmlns:iMatlabWCF="clr-namespace:MatlabWCFInterface;assembly=MatlabWCFInterface"
xmlns:iMatlabTreatment="clr-namespace:MatlabTreatmentInterface;assembly=MatlabTreatmentInterface"
xmlns:maskedInput="clr-namespace:Telerik.Windows.Controls.MaskedInput;assembly=Telerik.Windows.Controls.Input"
mc:Ignorable="d"
MinHeight="300" d:DesignWidth="900">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="CommonStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<telerik:InvertedBooleanConverter x:Key="InvertBooleanConverter"/>
<local:StringToDoubleConverter x:Key="StringToDoubleConverter"/>
<Style TargetType="StackPanel" x:Key="HeaderElements">
<Setter Property="Orientation" Value="Horizontal"/>
</Style>
<Style x:Key="TextHeader" TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="3 0"/>
</Style>
<Style x:Key="TextHeaderDocumentPane" TargetType="TextBlock" BasedOn="{StaticResource TextHeader}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadDocumentPane}}, Path=IsPinned}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="TextHeaderPane" TargetType="TextBlock" BasedOn="{StaticResource TextHeader}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadPane}}, Path=IsPinned}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style x:Key="HeaderImg" TargetType="Image">
<Setter Property="Width" Value="30"/>
</Style>
<Style TargetType="telerik:RadPane">
<Setter Property="CanUserClose" Value="False"/>
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
<Style.Triggers>
<Trigger Property="IsPinned" Value="False">
<Setter Property="RenderTransform">
<Setter.Value>
<TransformGroup>
<RotateTransform Angle="90"/>
</TransformGroup>
</Setter.Value>
</Setter>
<Setter Property="Margin" Value="0 0 3 0"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="telerik:RadDocumentPane">
<Setter Property="CanUserClose" Value="False"/>
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
<Style.Triggers>
<Trigger Property="IsPinned" Value="False">
<Setter Property="RenderTransform">
<Setter.Value>
<TransformGroup>
<RotateTransform Angle="90"/>
</TransformGroup>
</Setter.Value>
</Setter>
<Setter Property="Margin" Value="0 0 3 0"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="ParametersTitle" TargetType="TextBlock" BasedOn="{StaticResource CategoryTitle}">
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Margin" Value="10"/>
</Style>
<Style x:Key="SessionParametersValue" TargetType="{x:Type Control}" BasedOn="{StaticResource ParametersValues}">
<Setter Property="Width" Value="300"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
</Style>
<DataTemplate x:Key="TreatmentsTemplate" DataType="{x:Type iMatlabTreatment:ITreatment}">
<Button Style="{StaticResource TileButton}" IsEnabled="{Binding IsManageableByIHM}"
CommandParameter="{Binding}"
Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=local:SessionControlPaneRadDocking}, Path=DataContext.ActiveTreatment}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Image Source="{Binding IconPath}"/>
<Label Grid.Row="1" Content="{Binding MatlabTreatmentExternalName}"
FontWeight="Bold" HorizontalAlignment="Center"/>
</Grid>
</Button>
</DataTemplate>
<ItemsPanelTemplate x:Key="TreatmentItemPanel">
<WrapPanel x:Name="PropertiesWrapPanel" Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadPaneGroup}}, Path=ActualWidth}"/>
</ItemsPanelTemplate>
<DataTemplate x:Key="IntCameraProperty">
<StackPanel Margin="0 3">
<TextBlock Width="180" Text="{Binding Name}" Style="{StaticResource ParametersTitle}"/>
<telerik:RadNumericUpDown Value="{Binding IHMValue}" Style="{StaticResource SessionParametersValue}"
IsEnabled="{Binding Accessible}" HideTrailingZeros="True"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="IntBoundedCameraProperty">
<StackPanel Margin="0 3">
<TextBlock Width="180" Text="{Binding Name}" Style="{StaticResource ParametersTitle}"/>
<DockPanel>
<telerik:RadNumericUpDown Value="{Binding IHMValue}" Style="{StaticResource SessionParametersValue}"
IsEnabled="{Binding Accessible}" HideTrailingZeros="True"
Minimum="{Binding ConstraintValueInt[0]}" Maximum="{Binding ConstraintValueInt[1]}"/>
</DockPanel>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="DoubleCameraProperty">
<StackPanel Margin="0 3">
<TextBlock Width="180" Text="{Binding Name}" Style="{StaticResource ParametersTitle}"/>
<telerik:RadNumericUpDown Value="{Binding IHMValue, Converter={StaticResource StringToDoubleConverter}}" NumberDecimalDigits="16"
IsEnabled="{Binding Accessible}" Style="{StaticResource SessionParametersValue}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="DoubleBoundedCameraProperty">
<StackPanel Margin="0 3">
<TextBlock Width="180" Text="{Binding Name}" Style="{StaticResource ParametersTitle}"/>
<telerik:RadNumericUpDown Value="{Binding IHMValue, Converter={StaticResource StringToDoubleConverter}}"
IsEnabled="{Binding Accessible}" NumberDecimalDigits="16"
Minimum="{Binding ConstraintValueDouble[0]}"
Maximum="{Binding ConstraintValueDouble[1]}"
Style="{StaticResource SessionParametersValue}" />
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="StringCameraProperty">
<StackPanel Margin="0 3">
<TextBlock Text="{Binding Name}" Style="{StaticResource ParametersTitle}"/>
<TextBox Text="{Binding IHMValue}" Style="{StaticResource SessionParametersValue}" IsReadOnly="{Binding Accessible, Converter={StaticResource InvertBooleanConverter}}"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="EnumCameraProperty">
<StackPanel Margin="0 3">
<TextBlock Text="{Binding Name}" Style="{StaticResource ParametersTitle}"/>
<telerik:RadComboBox ItemsSource="{Binding ConstraintValueString}" SelectedValue="{Binding IHMValue}"
IsReadOnly="{Binding Accessible, Converter={StaticResource InvertBooleanConverter}}"
Width="300" HorizontalAlignment="Left"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="CameraPropertiesTemplate">
<ContentControl Content="{Binding}">
<ContentControl.Style>
<Style TargetType="ContentControl">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Type}" Value="{x:Static iMatlabWCF:ETypeCameraProperty.Int}"/>
<Condition Binding="{Binding IsConstraintValueExist}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="ContentTemplate" Value="{StaticResource IntCameraProperty}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Type}" Value="{x:Static iMatlabWCF:ETypeCameraProperty.Int}"/>
<Condition Binding="{Binding IsConstraintValueExist}" Value="True"/>
<Condition Binding="{Binding Constraint}" Value="bounded"/>
</MultiDataTrigger.Conditions>
<Setter Property="ContentTemplate" Value="{StaticResource IntBoundedCameraProperty}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Type}" Value="{x:Static iMatlabWCF:ETypeCameraProperty.Double}"/>
<Condition Binding="{Binding IsConstraintValueExist}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="ContentTemplate" Value="{StaticResource DoubleCameraProperty}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Type}" Value="{x:Static iMatlabWCF:ETypeCameraProperty.Double}"/>
<Condition Binding="{Binding IsConstraintValueExist}" Value="True"/>
<Condition Binding="{Binding Constraint}" Value="bounded"/>
</MultiDataTrigger.Conditions>
<Setter Property="ContentTemplate" Value="{StaticResource DoubleBoundedCameraProperty}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Type}" Value="{x:Static iMatlabWCF:ETypeCameraProperty.String}"/>
<Condition Binding="{Binding IsConstraintValueExist}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="ContentTemplate" Value="{StaticResource StringCameraProperty}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Type}" Value="{x:Static iMatlabWCF:ETypeCameraProperty.String}"/>
<Condition Binding="{Binding IsConstraintValueExist}" Value="True"/>
<Condition Binding="{Binding Constraint}" Value="enum"/>
</MultiDataTrigger.Conditions>
<Setter Property="ContentTemplate" Value="{StaticResource EnumCameraProperty}"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<DockPanel Background="LightGray">
<telerik:RadDocking Name="SessionMainPanel" PaneActivationMode="LastActivated" Background="LightGray"
ElementLoaded="SessionMainPanel_ElementLoaded">
<telerik:RadDocking.DocumentHost>
<telerik:RadSplitContainer>
<telerik:RadPaneGroup Background="AliceBlue" telerik:StyleManager.Theme="Fluent">
<telerik:RadDocumentPane Title="{x:Static resx:Resources.Treatments}" telerik:RadDocking.SerializationTag="TreatmentsPane"
CanUserClose="False" IsDragDisabled="True">
<telerik:RadDocumentPane.Header>
<StackPanel x:Name="TreamtentPanel" Style="{StaticResource HeaderElements}">
<TextBlock Text="{x:Static resx:Resources.Treatments}" Style="{StaticResource TextHeaderDocumentPane}"/>
<Image Source="/icons/matlab.png" Style="{StaticResource HeaderImg}"/>
</StackPanel>
</telerik:RadDocumentPane.Header>
<telerik:RadTileList ItemsSource="{Binding Treatments}" ItemTemplate="{StaticResource TreatmentsTemplate}"
HorizontalAlignment="Center" VerticalTilesAlignment="Center">
</telerik:RadTileList>
</telerik:RadDocumentPane>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
</telerik:RadDocking.DocumentHost>
<telerik:RadSplitContainer InitialPosition="DockedLeft" telerik:StyleManager.Theme="Fluent">
<telerik:RadPaneGroup>
<telerik:RadPane Title="{x:Static resx:Resources.CameraParameters}" telerik:RadDocking.SerializationTag="CameraParamsPane"
IsPinned="False" CanUserClose="False">
<telerik:RadPane.Header>
<StackPanel x:Name="CameraParamsPanel" Style="{StaticResource HeaderElements}">
<TextBlock Text="{x:Static resx:Resources.CameraParameters}" Style="{StaticResource TextHeaderPane}"/>
<Image Source="/icons/camera.png" Style="{StaticResource HeaderImg}"/>
</StackPanel>
</telerik:RadPane.Header>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" Width="Auto" Background="#f6fcff" >
<ScrollViewer.Resources>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding AllCameraProperties.Count}" Value="0">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style TargetType="StackPanel">
<Style.Triggers>
<DataTrigger Binding="{Binding AllCameraProperties.Count}" Value="0">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ScrollViewer.Resources>
<Grid>
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="25"
Margin="0 25" Style="{StaticResource CategoryTitle}" Visibility="Collapsed"
Text="{x:Static resx:Resources.NoCameraProperty}"/>
<StackPanel>
<ListView HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch"
ItemsSource="{Binding AllCameraProperties}" Background="#eff9ff"
ItemTemplate="{StaticResource CameraPropertiesTemplate}"
ItemsPanel="{StaticResource TreatmentItemPanel}"/>
<WrapPanel HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0 0 70 0">
<telerik:RadButton Margin="10"
Command="{Binding WriteProperties}" Content="{x:Static resx:Resources.WriteParameters}"/>
<telerik:RadButton Margin="10"
Command="{Binding ResetProperties}" Content="{x:Static resx:Resources.ResetParameters}"/>
<telerik:RadButton Margin="10"
Command="{Binding SetProperties}" Content="{x:Static resx:Resources.SetParameters}"/>
</WrapPanel>
</StackPanel>
</Grid>
</ScrollViewer>
</telerik:RadPane>
<telerik:RadPane Title="{x:Static resx:Resources.AcquisitionParameters}" telerik:RadDocking.SerializationTag="AcquisitionParamsPane"
IsPinned="False" CanUserClose="False">
<telerik:RadPane.Header>
<StackPanel x:Name="AcquisitionParamsPanel" Style="{StaticResource HeaderElements}">
<TextBlock Text="{x:Static resx:Resources.AcquisitionParameters}" Style="{StaticResource TextHeaderPane}"/>
<Image Source="/icons/acquisitionParams.png" Style="{StaticResource HeaderImg}"/>
</StackPanel>
</telerik:RadPane.Header>
<ScrollViewer VerticalScrollBarVisibility="Visible">
<StackPanel Background="#f6fcff">
<telerik:RadExpander Header="{x:Static resx:Resources.Images}" Background="LightSteelBlue" IsExpanded="True">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden">
<Grid x:Name="ImagesParametersGrid" Background="#f6fcff">
<Grid.Resources>
<Style TargetType="StackPanel">
<Setter Property="Margin" Value="10 8"/>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="{x:Static resx:Resources.FrameTrigger}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadNumericUpDown Style="{StaticResource SessionParametersValue}"
Value="{Binding FramePerTriggerNumber}" HideTrailingZeros="True" Minimum="0"/>
</StackPanel>
<StackPanel Grid.Column="1">
<TextBlock Text="{x:Static resx:Resources.TriggerRepeat}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadNumericUpDown Style="{StaticResource SessionParametersValue}"
Value="{Binding TriggerRepeatNumber}" HideTrailingZeros="True" Minimum="0"/>
</StackPanel>
<StackPanel Grid.Column="2">
<TextBlock Text="{x:Static resx:Resources.TriggerFrameDelay}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadNumericUpDown Style="{StaticResource SessionParametersValue}"
Value="{Binding TriggerFrameDelayNumber}" HideTrailingZeros="True" Minimum="0"/>
</StackPanel>
<StackPanel Grid.Row="1">
<TextBlock Text="{x:Static resx:Resources.FrameGrabInterval}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadNumericUpDown Style="{StaticResource SessionParametersValue}"
Value="{Binding FrameGrabInterval}" HideTrailingZeros="True" Minimum="1"/>
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="1">
<TextBlock Text="{x:Static resx:Resources.TriggerType}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadComboBox ItemsSource="{Binding Types}" SelectedIndex="1" SelectedItem="{Binding CurrentType, Mode=TwoWay}" Width="300" HorizontalAlignment="Left"/>
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="2">
<TextBlock Text="{x:Static resx:Resources.FilePrefix}" Style="{StaticResource CategoryTitle}"/>
<TextBox Style="{StaticResource SessionParametersValue}" Text="{Binding FilePrefix}"/>
</StackPanel>
<Grid Grid.Row="2" Grid.ColumnSpan="3" Margin="10 8">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="{x:Static resx:Resources.ImagesDirectory}" Style="{StaticResource CategoryTitle}"/>
<TextBox IsReadOnly="True" Text="{Binding FolderName}" Style="{StaticResource SessionParametersValue}" Width="Auto" HorizontalAlignment="Stretch" Grid.Row="1"/>
<telerik:RadButton Margin="8" HorizontalAlignment="Right" Grid.Row="2"
Content="{x:Static resx:Resources.ChooseFolder}"
Command="{Binding ChooseFolder}"/>
</Grid>
<StackPanel Grid.Row="3">
<TextBlock Text="{x:Static resx:Resources.GenerateMean}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadToggleButton Style="{StaticResource RadToggleSwitch}" HorizontalAlignment="Left" Margin="20 0 0 0"
IsChecked="{Binding IsMeanGenerate}"/>
</StackPanel>
<StackPanel Grid.Row="3" Grid.Column="1">
<TextBlock Text="{x:Static resx:Resources.Format}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadComboBox ItemsSource="{Binding Formats}" SelectedIndex="0" SelectedItem="{Binding CurrentFormat, Mode=TwoWay}" Width="300" HorizontalAlignment="Left"/>
</StackPanel>
<StackPanel Grid.Row="3" Grid.Column="2">
<TextBlock Text="{x:Static resx:Resources.BitDepth}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadToggleButton Style="{StaticResource RadToggleSwitch}" HorizontalAlignment="Left" Margin="20 0 0 0"
IsChecked="{Binding ApplyBitDepth}"/>
</StackPanel>
</Grid>
</ScrollViewer>
</telerik:RadExpander>
<telerik:RadExpander Header="{x:Static resx:Resources.Video}" Background="LightSteelBlue" IsExpanded="True">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden">
<Grid x:Name="VideoParametersGrid" Background="#f6fcff">
<Grid.Resources>
<Style TargetType="StackPanel">
<Setter Property="Margin" Value="10 5"/>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid Grid.ColumnSpan="2" Margin="10 8">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="{x:Static resx:Resources.VideoDirectory}" Style="{StaticResource CategoryTitle}"/>
<TextBox IsReadOnly="True" Text="{Binding VideoFolderName}" Style="{StaticResource SessionParametersValue}" Width="Auto" HorizontalAlignment="Stretch" Grid.Row="1"/>
<telerik:RadButton Margin="8" HorizontalAlignment="Right" Grid.Row="2"
Content="{x:Static resx:Resources.ChooseFolder}"
Command="{Binding ChooseVideoFolder}"/>
</Grid>
<StackPanel Grid.Row="1">
<TextBlock Text="{x:Static resx:Resources.FileName}" Style="{StaticResource CategoryTitle}"/>
<TextBox Style="{StaticResource SessionParametersValue}" Text="{Binding VideoFileName}"/>
</StackPanel>
<StackPanel Grid.Row="1" Grid.Column="1">
<TextBlock Text="{x:Static resx:Resources.Format}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadComboBox ItemsSource="{Binding VideoTypes}" SelectedIndex="2" SelectedItem="{Binding CurrentVideoType, Mode=TwoWay}" Width="300" HorizontalAlignment="Left"/>
</StackPanel>
</Grid>
</ScrollViewer>
</telerik:RadExpander>
</StackPanel>
</ScrollViewer>
</telerik:RadPane>
<telerik:RadPane Title="{x:Static resx:Resources.TreatmentParameters}" telerik:RadDocking.SerializationTag="TreatmentParamsPane"
IsPinned="False" CanUserClose="False">
<telerik:RadPane.Header>
<StackPanel x:Name="TreatmentsParamsPanel" Style="{StaticResource HeaderElements}">
<TextBlock Text="{x:Static resx:Resources.TreatmentParameters}" Style="{StaticResource TextHeaderPane}"/>
<Image Source="/icons/settings.png" Style="{StaticResource HeaderImg}"/>
</StackPanel>
</telerik:RadPane.Header>
<StackPanel>
<TextBlock Text="{x:Static resx:Resources.DefaultColor}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadColorEditor SelectedColor="{Binding ColorTreatments, Mode=TwoWay}" ColorMode="RGB" />
</StackPanel>
</telerik:RadPane>
<telerik:RadPane Title="{x:Static resx:Resources.ViewerParameters}" telerik:RadDocking.SerializationTag="ViewerParamsPane"
IsPinned="False" CanUserClose="False">
<telerik:RadPane.Header>
<StackPanel x:Name="ViewerParamsPanel" Style="{StaticResource HeaderElements}">
<TextBlock Text="{x:Static resx:Resources.ViewerParameters}" Style="{StaticResource TextHeaderPane}"/>
<Image Source="/icons/viewerParams.png" Style="{StaticResource HeaderImg}"/>
</StackPanel>
</telerik:RadPane.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel>
<TextBlock Text="{x:Static resx:Resources.ColorsSpace}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadComboBox ItemsSource="{Binding ColorsSpaces}" SelectedIndex="0" SelectedItem="{Binding CurrentColorsSpace, Mode=TwoWay}" Width="300" HorizontalAlignment="Left"/>
</StackPanel>
<StackPanel Grid.Column="1">
<StackPanel.Style>
<Style TargetType="StackPanel">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentColorsSpace.Value}" Value="{x:Static iMatlabWCF:EReturnedColorSpace.Bayer}">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<TextBlock Text="{x:Static resx:Resources.ColorFilter}" Style="{StaticResource CategoryTitle}"/>
<telerik:RadComboBox ItemsSource="{Binding ColorFilter}" SelectedIndex="0" SelectedItem="{Binding CurrentColorFilter, Mode=TwoWay}" Width="300" HorizontalAlignment="Left"/>
</StackPanel>
<telerik:RadButton Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right" Margin="20 10"
Command="{Binding UpdateColorsSapce}" Content="{x:Static resx:Resources.UpdateColorsSpace}"/>
</Grid>
</telerik:RadPane>
<telerik:RadPane Title="HiddenPane" IsPinned="False" telerik:RadDocking.SerializationTag="HiddenPane"
Visibility="Hidden" Width="40" Height="0" Margin="0"/>
</telerik:RadPaneGroup>
</telerik:RadSplitContainer>
</telerik:RadDocking>
</DockPanel>
<StackPanel x:Name="ButtonsPanel" Width="50" HorizontalAlignment="Left" VerticalAlignment="Bottom">
<telerik:RadToggleButton ToolTip="{x:Static resx:Resources.Viewer}" Margin="5 2"
IsChecked="{Binding Path=IsViewerDisplayed, Mode=OneWay}"
Command="{Binding Path=ShowOrCloseViewerCommand}">
<Image Source="/icons/viewer.png" Style="{StaticResource HeaderImg}"/>
</telerik:RadToggleButton>
<telerik:RadButton ToolTip="{x:Static resx:Resources.AcquireImages}" Command="{Binding AcquireImages}"
Margin="5 2" Padding="5" >
<Image Source="/icons/acquireImg.png" Style="{StaticResource HeaderImg}"/>
</telerik:RadButton>
<telerik:RadToggleButton ToolTip="{Binding AcquireVideoLabel}" Command="{Binding AcquireVideo}"
IsChecked="{Binding IsAcquiringVideo, Mode=OneWayToSource}" Margin="5 2">
<Image Source="/icons/acquireVideo.png" Style="{StaticResource HeaderImg}"/>
</telerik:RadToggleButton>
</StackPanel>
</Grid>
</UserControl>
Like RanTabControl
Need this for an application with lots of tabs wich would not fit in the top or bottom template.
Maybe it works with a customizable TabStripTemplate where i can implement e.g. a GridView or something
Like this with a scrollbar (used TabControl PRISM example for this)
The RadDocking control is not registering position changes of the docking window when RadDocking is in a WPF UserControl embedded in a WinForms ElementHost:
This appears to only apply to the main window; if you (at runtime) move one of the example panes into a separate window, the compass on that window displays in the correct position when you undock the other pane:
I've attached a stripped down solution that reproduces the issue (originally noticed using 2018R2 when rewriting legacy VB WinForms in C# WPF user controls as part of a tech refresh; attached demo is using 2020R2 .NET 4.5 binaries).