老周:當RichEditBox控件的上下文菜單即將彈出時,會引發ContextMenuOpening事件,我們需要處理該事件,并且將e.Handled屬性設置為true,這樣才能阻止默認上下文菜單的彈出
在RichEditBox控件上聲明附加的菜單項
~~~
<RichEditBox Name="redit" Grid.Row="3" Margin="10,10,10,10" ContextMenuOpening="OnContextMenuOpening">
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="復制" Click="OnCopy"/>
<MenuFlyoutItem Text="剪切" Click="OnCut"/>
<MenuFlyoutItem Text="粘貼" Click="OnPaste"/>
<MenuFlyoutSeparator/>
<MenuFlyoutSubItem Text="字號">
<MenuFlyoutItem Text="16" Tag="16" Click="OnFontSize" />
<MenuFlyoutItem Text="20" Tag="20" Click="OnFontSize"/>
<MenuFlyoutItem Text="24" Tag="24" Click="OnFontSize" />
<MenuFlyoutItem Text="36" Tag="36" Click="OnFontSize"/>
<MenuFlyoutItem Text="48" Tag="48" Click="OnFontSize"/>
</MenuFlyoutSubItem>
<!--分割-->
<MenuFlyoutSeparator/>
<ToggleMenuFlyoutItem Text="加粗" Click="OnBold" />
<MenuFlyoutSeparator/>
<MenuFlyoutSubItem Text="下劃線">
<MenuFlyoutItem Text="無" Tag="-1" Click="OnUnderline" />
<MenuFlyoutItem Text="單實線" Tag="0" Click="OnUnderline"/>
<MenuFlyoutItem Text="雙實線" Tag="1" Click="OnUnderline"/>
<MenuFlyoutItem Text="虛線" Tag="2" Click="OnUnderline"/>
</MenuFlyoutSubItem>
<MenuFlyoutSeparator/>
<MenuFlyoutSubItem Text="顏色">
<MenuFlyoutItem Text="黑色" Tag="黑色" Click="OnTinct"/>
<MenuFlyoutItem Text="藍色" Tag="藍色" Click="OnTinct"/>
<MenuFlyoutItem Text="白色" Tag="白色" Click="OnTinct"/>
</MenuFlyoutSubItem>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
</RichEditBox>
~~~
處理OnContextMenuOpening
~~~
private void OnContextMenuOpening(object sender , ContextMenuEventArgs e)
{
//阻止彈出默認的上下文菜單,然后,調用ShowAt方法在指定的坐標處打開菜單
e.Handled = true;
MenuFlyout menu = FlyoutBase.GetAttachedFlyout(redit) as MenuFlyout;
menu?.ShowAt(redit , new Point(e.CursorLeft , e.CursorTop));
}
~~~
處理復制粘貼
~~~
private void OnCopy(object sender , RoutedEventArgs e)
{
//復制
redit.Document.Selection.Copy();
}
private void OnCut(object sender , RoutedEventArgs e)
{
//剪切
redit.Document.Selection.Cut();
}
private void OnPaste(object sender , RoutedEventArgs e)
{
//粘貼
redit.Document.Selection.Paste(0);
//Paste 要在粘貼操作中使用的剪貼板格式。零表示最佳格式
}
~~~
處理OnFontSize
~~~
/// <summary>
/// 設置字體
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnFontSize(object sender , RoutedEventArgs e)
{
MenuFlyoutItem item = sender as MenuFlyoutItem;
// 獲取字號
float size = Convert.ToSingle(item.Tag);
redit.Document.Selection.CharacterFormat.Size = size;
}
~~~
~~~
/// <summary>
/// 加粗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnBold(object sender , RoutedEventArgs e)
{
//using Windows.UI.Text;
ToggleMenuFlyoutItem item = sender as ToggleMenuFlyoutItem;
redit.Document.Selection.CharacterFormat.Bold = item.IsChecked ? FormatEffect.On : FormatEffect.Off;
}
private void OnUnderline(object sender , RoutedEventArgs e)
{
MenuFlyoutItem item = sender as MenuFlyoutItem;
int x = Convert.ToInt32(item.Tag);
UnderlineType unlinetp;
switch (x)
{
case -1: // 無
unlinetp = UnderlineType.None;
break;
case 0: // 單實線
unlinetp = UnderlineType.Single;
break;
case 1: // 雙實線
unlinetp = UnderlineType.Double;
break;
case 2: // 虛線
unlinetp = UnderlineType.Dash;
break;
default:
unlinetp = UnderlineType.None;
break;
}
redit.Document.Selection.CharacterFormat.Underline = unlinetp;
}
~~~
~~~
private void OnTinct(object sender , RoutedEventArgs e)
{
MenuFlyoutItem item = sender as MenuFlyoutItem;
string tinct = item.Tag as string;
Windows.UI.Color color = new Windows.UI.Color();
switch (tinct)
{
case "黑色":
color= Windows.UI.Colors.Black;
break;
case "藍色":
color = Windows.UI.Colors.Blue;
break;
case "白色":
color = Windows.UI.Colors.White;
break;
default:
break;
}
redit.Document.Selection.CharacterFormat.BackgroundColor = color;
}
~~~
顏色在Windows.UI.Color
里面代碼都是抄老周的

參考:[http://www.cnblogs.com/tcjiaan/p/4937301.html](http://www.cnblogs.com/tcjiaan/p/4937301.html)
- 前言
- UWP win10 app 新關鍵字x:Bing
- win10應用 UWP 使用MD5算法
- win10 UWP讀寫文件
- UWP appButtonBar樣式
- C# 6.0 $&quot;Hello {csdn}&quot;
- Win10 UWP xaml 延遲加載元素
- UWP xaml 圓形頭像
- UWP 繪制圖形
- win10 uwp 通知Toast
- win10 UWP 顯示地圖
- win10 uwp 參考
- win10 uwp clone
- win10 uwp 裝機必備應用 含源代碼
- RichEditBox 使用自定義菜單
- win10 UWP FlipView
- win10 UWP 獲取系統信息
- win10 UWP 申請微軟開發者
- win10 UWP button
- win10 UWP Markdown 含源代碼
- win10 UWP 應用設置
- win10 UWP 九幽數據分析
- win10 UWP 圓形等待
- win10 UWP 標題欄后退
- win10 UWP 單元測試
- win10 UWP 你寫我讀
- win10 UWP RSS閱讀器
- win10 UWP MessageDialog 和 ContentDialog
- win10 UWP Hmac
- win10 UWP GET Post
- Win10 UWP Intro to controls and events
- win10 UWP Controls by function
- win10 uwp App-to-app communication 應用通信