This is reproducible only if the application that holds RadRibbonView is started on another machine and you are connected to it through Remote Desktop Connection. When the keytips are enabled and you click in the main machine, then click inside the remote desktop window, the keytips are displayed.
If you add the RibbonView into the Content of a TabItem (or RadTabItem) and then remove it from the content, the RibbonView is still in the memory.
This happens because we subscribe to few events of the Parent window on Loaded and unsubscribe on Unloaded. However, because of the specific content loading behavior of TabControl, Loaded of the content (the RibbonView) is fired once and Unloaded only once.
To work this around, before removing the RibbonView from the TabItem, call its OnUnloaded event handler. To do this, you can use a reflection to get the handler and then invoke it.
var methodInfo = typeof(RadRibbonView).GetMethods(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Where(m => m.Name == "OnUnloaded").First();
methodInfo.Invoke(ribbon, new object[2] { null, null });
The popup is no properly sized when you have two or more monitors with different resolutions. This is replicable also if the DPI is higher than 100%. To work this around you can create a custom ribbonview, get the content presenter of the popup and manually set its Width. Here is an example in code: public class CustomRibbonView : RadRibbonView { private ContentPresenter selectedTabContentPopup; public override void OnApplyTemplate() { base.OnApplyTemplate(); this.selectedTabContentPopup = this.GetTemplateChild("SelectedTabContentPopup") as ContentPresenter; } protected override void OnMinimizedPopupStateChanged(RadRoutedEventArgs e) { base.OnMinimizedPopupStateChanged(e); if (this.IsMinimizedPopupOpen) { this.selectedTabContentPopup.Width = this.ActualWidth; } } }
Currently, the minimized content of the ribbon opens up in a Popup element which leads to issues when positioned between two (or more) monitors. Introduce a feature that allows the content to opens in an Adorner element.
Add thin border in the RadRibbonWindow between the Tittle and RibbonView. We want the look of the window to be identical to how a non-implicit RadRibbonWindow would look (i.e., without the Themes directory with the style XAML files). Alternatively, if the title bar is taller and the borders are as thick as a normal window (e.g. Notepad), that is acceptable too.
Output error in VS: System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='Telerik.Windows.Controls.RadRibbonView', AncestorLevel='1''. BindingExpression:Path=IsHostedInRibbonWindow; DataItem=null; target element is 'WindowTitle' (Name='WindowTitle'); target property is 'NoTarget' (type 'Object')
The designer of VS crashes with a "Key cannot be null" when custom markup extension is used in Style Setter. This reproduces in the sample app attached in the blog (http://www.telerik.com/blogs/bring-office-2016-inspired-style-to-your-app-with-ui-for-wpf) on the TextBlock of the RabRadioButton HeadingStyle (snapshot attached) if you open MainWindow in Designer. Runtime everything works as expected.
This reproduces only if RadRibbonWindow is used with the default WPF Window's theme, instead of the Telerik's theme. Also, this reproduces only in the themes after Expression_Dark (starting from Windows8). You can find a list of the Telerik themes ordered chronologically in the help documentation.
If the RadRibbonWindow is maximized on the second (right) monitor and you click the application menu button to open the ApplicationMenu, the menu displays on the first (left) monitor.
To work this around enable the Telerik's RadRibbonWindow theming by setting the IsWindowsThemeEnabled static property to False.
static MainWindow()
{
IsWindowsThemeEnabled = false;
}
The window's content gets clipped when the window goes from Maximized to Normal WindowState. This reproduces only when the window and the screens are using specific sizes. The setup when this was reproduced was with a 1936x1056 size of RadRibbonWindow (in Normal state) and 1920x1080 screen resolution.
To reproduce this the IsWindowsThemeEnabled property of the RadRibbonWindow should be set to False.
To work this around, reset the Window size on WindowStateChanged.
private void MainWindow_StateChanged(object sender, EventArgs e)
{
if (this.WindowState == WindowState.Normal)
{
Width += 1;
Width -= 1;
}
}