2017-11-02 7 views
0

나는이 같은 WPF 코드가 있습니다MenuItem에 목록 상자를 표시하는 방법?

<ListBox SelectedItem="{Binding SelectedItem}"> 
    <ListBox.ContextMenu> 
     <ContextMenu> 
      <MenuItem Header="Delete" Click="MenuItem_Delete_Click" /> 
      <MenuItem Header="Replace" Click="MenuItem_Replace_Click"> 
       <ListBox SelectionMode="Single" SelectedItem="{Binding ReplaceItem}" /> 
      </MenuItem> 
      <MenuItem Header="Insert" Click="MenuItem_Insert_Click"> 
       <ListBox SelectionMode="Single" SelectedItem="{Binding InsertItem}}" /> 
      </MenuItem> 
</ListBox> 

을하지만 다음과 같이이 간다 :

마우스를 떠날 때 When mouse leave

마우스

When Mouse on

어떻게 해결해야합니까? 미리 감사드립니다!

+0

나는 텍스트의 색상을 생각하고 배경은 동일합니다. 텍스트 색상을 검정색으로 변경하고 확인하십시오. – Prajwal

답변

0

대신의 MenuItem에 목록 상자를 사용하는 이유는 기존 메뉴 항목에 메뉴 아이템을 추가하려고하지 않습니다 의 내 예제를 참조하십시오 "하자 (귀하의 경우에"삽입 "와"교체 "입니다).

  MenuItem mi = new MenuItem(); 
      mi.Header = "PX1-20T-D-B"; 
      NameOfYourMenuItem.Items.Add(mi); 
      mi.Click += new RoutedEventHandler(MenuItemClick); 

또한 그들의 각 하나의 이벤트 핸들러를 추가 할 수 있습니다.

0

을 대신 DataTemplates를 사용하려고하면 MenuItem의에서 목록 상자를 사용하거나 뒤에 코드에서 하위 메뉴 항목을 추가하는. 나는 당신을 포함하는 모음이 있다고 가정하여 목록 상자 항목.

코드에서
<MenuItem Header="Replace" Click="MenuItem_Replace_Click" ItemsSource="{Binding ReplaceItemsCollection}"> 
    <MenuItem.ItemTemplate> 
     <DataTemplate> 
      <MenuItem Header="{Binding}" Click="replaceSubMenuItem_Clicked"/> 
     </DataTemplate> 
    </MenuItem.ItemTemplate> 
</MenuItem> 
<MenuItem Header="Replace" Click="MenuItem_Replace_Click" ItemsSource="{Binding InsertItemsCollection}"> 
    <MenuItem.ItemTemplate> 
     <DataTemplate> 
      <MenuItem Header="{Binding}" Click="insertSubMenuItem_Clicked"/> 
     </DataTemplate> 
    </MenuItem.ItemTemplate> 
</MenuItem> 

(210) 뒤에 추가 :

private void replaceSubMenuItem_Clicked(object sender, EventArgs e) 
{ 
    // sender is the MenuItem. Just parse it. 
} 

private void insertSubMenuItem_Clicked(object sender, EventArgs e) 
{ 
    // ... 
}