2017-09-29 3 views
0

메뉴 항목에 아이콘 이미지를 추가하여 기본 제공 콤보 상자 상황에 맞는 메뉴 (복사, 잘라 내기, 붙여 넣기)를 수정해야합니다.편집 가능한 콤보 상자 (WPF)의 컨텍스트 메뉴 수정

ComboBox 컨트롤 템플릿의 PART_EditableTextBox에 원하는 컨텍스트 메뉴를 추가하고 템플릿을 리소스로 포함했습니다. 응용 프로그램이 실행되면 계획대로

<TextBox x:Name="PART_EditableTextBox" 
       Style="{x:Null}" 
       Template="{StaticResource ComboBoxTextBox}" 
       HorizontalAlignment="Left" 
       VerticalAlignment="Bottom" 
       Margin="3,3,23,3" 
       Focusable="True" 
       Background="Transparent" 
       Visibility="Hidden" 
       IsReadOnly="{TemplateBinding IsReadOnly}"> 
         <TextBox.ContextMenu> 
          <ContextMenu> 
           <MenuItem Header="Copy" 
              Command="ApplicationCommands.Copy"> 
            <MenuItem.Icon> 
             <Image Source="pack://application:,,,/testApp.UI;component/ViewModels/PngImages/Copy.ico" Style="{StaticResource ResourceKey=ImageStyleSmall}" /> 
            </MenuItem.Icon> 
           </MenuItem> 
           <MenuItem Header="Cut" 
              Command="ApplicationCommands.Cut"> 
            <MenuItem.Icon> 
             <Image Source="pack://application:,,,/testApp.UI;component/ViewModels/PngImages/Cut.ico" Style="{StaticResource ResourceKey=ImageStyleSmall}" /> 
            </MenuItem.Icon> 
           </MenuItem> 
           <MenuItem Header="Paste" 
              Command="ApplicationCommands.Paste"> 
            <MenuItem.Icon> 
             <Image Source="pack://application:,,,testApp.UI;component/ViewModels/PngImages/Paste.ico" Style="{StaticResource ResourceKey=ImageStyleSmall}" /> 
            </MenuItem.Icon> 
           </MenuItem> 
          </ContextMenu> 
         </TextBox.ContextMenu> 
        </TextBox> 

은, 상황에 맞는 메뉴가 작동하지만 부작용은 내 콤보 상자 테두리를 잃은 것입니다.

답변

0

을 내 원래의 테스트에서 프로젝트 MSDN 사이트 (docs.microsoft.com/en-us/dotnet/framework/wpf/controls/...)에서 복사 한 컨트롤 템플릿을 사용했습니다. 그런 다음 다른 방법으로 작은 응용 프로그램을 만들고 콤보 상자를 추가 한 다음 템플릿 편집 옵션을 선택했습니다. 해당 템플릿과 유사한 변경을 수행하고 작동하도록했습니다. 상황에 맞는 메뉴가 작동하고 콤보 박스 경계가 그대로 유지됩니다.

0

템플릿 "ComboBoxTextBox"는 어떻습니까? 거기에 국경이 있니? 당신은 기본적으로 "나는 어떤을 원하지 않는 프레임 워크를 말해 :

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/> 
    <Setter Property="BorderBrush" Value="{StaticResource TextBox.Static.Border}"/> 
    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/> 
    <Setter Property="HorizontalContentAlignment" Value="Left"/> 
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/> 
    <Setter Property="AllowDrop" Value="true"/> 
    <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/> 
    <Setter Property="Stylus.IsFlicksEnabled" Value="False"/> 

스타일 ="{널 X}를 "말을함으로써 : 아래

+0

나는 그 템플릿이나 다른 템플릿을 수정하지 않았습니다. ComboBoxTextBox 템플릿에는 테두리 요소가 있습니다. –

0

기본 텍스트 상자의 스타일의 시작 부분을 선언하는 방법입니다 그!"

공지 사항이 2 줄 당신은 부족 :

<Setter Property="BorderBrush" Value="{StaticResource TextBox.Static.Border}"/> 
<Setter Property="BorderThickness" Value="1"/> 

다른 실종 특성 아마 장치와 일부 탭 탐색, 상호 작용을 깰 것이다, 드래그 & 드롭, 등뿐만 아니라

+0

나는 그 제안을 따랐지만 도움이되지 못했습니다. –