0
使用.NET 4和VS2010親,我已經創建了一個包含在主窗口下面的XAML一個非常簡單的WPF應用程序:取代RichTextBox中的文本菜單
<Grid>
<RichTextBox x:Name="richTextBox"
Margin="2"/>
</Grid>
所有我想這樣做,並且至今在做的時候不成功,是用我自己的替換RichTextBox的ContextMenu。我試着隱藏代碼從MSDN沒有運氣:
public MainWindow()
{
InitializeComponent();
richTextBox.ContextMenuOpening += new ContextMenuEventHandler(richTextBox_ContextMenuOpening);
}
private void richTextBox_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
RichTextBox rtb = sender as RichTextBox;
if (rtb == null)
{
return;
}
ContextMenu contextMenu = rtb.ContextMenu;
contextMenu.Items.Clear();
MenuItem menuItem = new MenuItem();
menuItem.Header = "Test";
contextMenu.Items.Add(menuItem);
contextMenu.PlacementTarget = rtb;
contextMenu.Placement = PlacementMode.RelativePoint;
TextPointer position = rtb.Selection.End;
if (position == null)
{
return;
}
Rect positionRect = position.GetCharacterRect(LogicalDirection.Forward);
contextMenu.HorizontalOffset = positionRect.X;
contextMenu.VerticalOffset = positionRect.Y;
contextMenu.IsOpen = true;
e.Handled = true;
}
我在什麼我沒有做正確的損失。是否必須在RTB捕捉到MouseDown事件?我是否必須派生自己的RTB版本並覆蓋ContextMenuOpening才能使其發揮作用?這看起來很簡單,但我只是沒有看到它。
在此先感謝。