This is a migrated thread and some comments may be shown as answers.

Binding MaxHeight of RadWrapPanel in a style

2 Answers 90 Views
Menu
This is a migrated thread and some comments may be shown as answers.
Peter
Top achievements
Rank 1
Peter asked on 24 May 2011, 04:34 AM
Hello,

I'm trying to dynamically update the MaxHeight  property of a RadMenuItem based upon the value in another property (binding to a frameworkelement ActualHeight). The binding appears to work great when I first click on each RadMenuItem, upon subsequent clicking of each Item the binding is no longer respected. Binding code below...

The property getter for DropDownMenuMaxSize is called upon first click of each menu item but never called again. The Setter is called when I expect it to, but in turn the breakpoint on the getter for DropDownMenuMaxSize is never called again. I've tried putting a dummy converter on the style binding, but that is only called once as well.  Any suggestions?
<Style x:Key="RadMenuItemStyle" TargetType="telerik:RadMenuItem">
    <Setter Property="Padding" Value="0"/>
    <Setter Property="Margin" Value="0"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="ItemsPanel">
<Setter Property="ItemsPanel">
            <Setter.Value>
                <ItemsPanelTemplate>
                      <telerik:RadWrapPanel Orientation="Vertical" MaxHeight="{Binding ElementName=xThisWindow, Path=DropDownMenuMaxSize}"/>
                </ItemsPanelTemplate>
            </Setter.Value>
        </Setter>
</Style>
    <telerik:ContainerBindingCollection x:Key="RadMenuDataItemBinding">
        <telerik:ContainerBinding PropertyName="IsChecked" Binding="{Binding IsChecked, Mode=TwoWay}" />
        <telerik:ContainerBinding PropertyName="IsEnabled" Binding="{Binding IsEnabled, Mode=TwoWay}" />
        <telerik:ContainerBinding PropertyName="IsCheckable" Binding="{Binding IsCheckable}" />
        <telerik:ContainerBinding PropertyName="IsSeparator" Binding="{Binding IsSeparator}" />
        <telerik:ContainerBinding PropertyName="StaysOpenOnClick" Binding="{Binding StaysOpenOnClick}" />
    </telerik:ContainerBindingCollection>

<telerik:RadMenu x:Name="xRadMenuTools" Width="Auto" Margin="4,3,0,3" Height="22" ClickToOpen="True" ItemClick="RadMenu_ItemClick" HorizontalAlignment="Left" ItemContainerStyle="{StaticResource RadMenuItemStyle}">
                <telerik:RadMenuItem x:Name="xRadMenuItem1" Header="Tools">
                        <telerik:RadMenuItem.ItemTemplate>
                            <telerik:HierarchicalDataTemplate telerik:ContainerBinding.ContainerBindings="{StaticResource RadMenuDataItemBinding}">
                                <TextBlock Text="{Binding DisplayName}" controlsToolTip:ToolTipService.ToolTip="{Binding ToolTip}"/>
                            </telerik:HierarchicalDataTemplate>
                        </telerik:RadMenuItem.ItemTemplate>
                    </telerik:RadMenuItem>
..more menu items....
</telerik:RadMenu>

2 Answers, 1 is accepted

Sort by
0
Valeri Hristov
Telerik team
answered on 26 May 2011, 03:03 PM
Hello Peter,

Can you send us a simple project that can be used to observe the problem? I am pretty sure your requirement is not possible in Silverlight (you cannot bind to ActualWidth/ActualHeight in Silverlight) but I would like to try to help.

Best wishes,
Valeri Hristov
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
0
Peter
Top achievements
Rank 1
answered on 06 Jun 2011, 04:25 PM
Valeri,

I modified the binding to a separate property (not ActualHeight) and still had the same behavior. The getter for the property simply isn't called when the property changes after the first time click, unless the RadMenuItem collection is changed. A temporary workaround I found is to empty out the ItemSource collection of bound RadMenuItems and add them back in, then when the RadMenu is clicked the getter is called and all works as expected. If I get a chance I will put together a sample project as suggested. Thank you.
Tags
Menu
Asked by
Peter
Top achievements
Rank 1
Answers by
Valeri Hristov
Telerik team
Peter
Top achievements
Rank 1
Share this question
or