ふたつ問題があります。
これらの回避策についての情報をいただけると幸いです。
- RibbonApplicationMenuItem をクリックするとイベントが2回通知される
- Expander を開いてから RibbonApplicationMenuItem をクリックすると、 OriginalSource が Expander になっている
環境は
Windows 7
.NET Framework 4.5
Visual Studio 2012 Pro
です。
以下、再現コードです (System.Windows.Controls.Ribbon を参照に追加します)。
<RibbonWindow
x:Class="ExpanderIssue.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Height="350"
Width="525">
<StackPanel Orientation="Vertical">
<Ribbon IsMinimized="True">
<Ribbon.ApplicationMenu>
<RibbonApplicationMenu>
<RibbonApplicationSplitMenuItem Header="Open" Command="Open"/>
</RibbonApplicationMenu>
</Ribbon.ApplicationMenu>
</Ribbon>
<Expander Header="Expander" IsExpanded="False">
<TextBlock Text="Test"/>
</Expander>
</StackPanel>
</RibbonWindow>
using System.Windows;
using System.Windows.Controls.Ribbon;
using System.Windows.Input;
namespace ExpanderIssue
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : RibbonWindow
{
static MainWindow()
{
CommandManager.RegisterClassCommandBinding(typeof(MainWindow), new CommandBinding(ApplicationCommands.Open, DoOpen));
}
public MainWindow()
{
InitializeComponent();
}
private static void DoOpen(object sender, ExecutedRoutedEventArgs e)
{
e.Handled = true;
MessageBox.Show(string.Format("Open: OriginalSource={0}", e.OriginalSource));
}
}
}