2014-11-16 2 views
0

현재 프로세스 (창 제목)를 추가하려고하는 콤보 상자가 있습니다. 내 코드는 다음과 같습니다C# wpf : 콤보 박스에 항목을 추가 할 수 없습니다.

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    List<ComboBoxItem> list = new List<ComboBoxItem>(); 
    ComboBoxItem item; 
    Process[] _processes = Process.GetProcesses(); 
    foreach (Process process in _processes) 
    { 
     item = new ComboBoxItem(); 
     item.Content = process.MainWindowTitle; 
     item.ToolTip = process.MainWindowTitle; 

     list.Add(item) 
    } 

    cbProcesses.ItemsSource = list; 
} 

그리고 XAML :

<ComboBox x:Name="cbProcesses" HorizontalAlignment="Left" Margin="101,40,0,0" VerticalAlignment="Top" Width="120" SelectionChanged="comboProcesses_Selected" IsSynchronizedWithCurrentItem="True" SelectedIndex="0"> 
      <ComboBox.ItemContainerStyle> 
       <Style TargetType="ComboBoxItem" BasedOn="{StaticResource {x:Type ComboBoxItem}}"> 
        <EventSetter Event="MouseEnter" Handler="cbProcesses_MouseEnter" /> 
       </Style> 
      </ComboBox.ItemContainerStyle> 
</ComboBox> 

cbProcesses.ItemsSource = list을 시도 할 때 그것은 충돌합니다. 내가 뭘 할 수 있니?

+0

무슨 예외를 얻는가를? –

+0

itemsSource 설정과 관련하여 아무런 문제가 보이지 않습니다. 콤보 상자 ItemContainer 스타일을 제거하고 – Sajeetharan

+0

올바른지 말하지 않았습니까? 이제 MessageBox에 예외를 작성하도록 설정했습니다. "data.xml"은 다른 프로세스에서 사용하기 때문에 열 수 없다고합니다. 위 코드를 모두 작성하지 않았습니다 ... XML 파일을 사용하여 XML에 저장된 프로세스가 실행되는지 확인합니다. MessageBox에서 '확인'을 클릭하면 아무 문제없이 윈도우가 열립니다. – GSeriousB

답변

0

이 완벽 나를 위해 작동 :

<Window x:Class="WpfApplication1.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"> 
    <Grid> 
     <ComboBox x:Name="cbProcesses" HorizontalAlignment="Left" Margin="101,40,0,0" VerticalAlignment="Top" Width="120" IsSynchronizedWithCurrentItem="True" SelectedIndex="0"> 
      <ComboBox.ItemContainerStyle> 
       <Style TargetType="ComboBoxItem" BasedOn="{StaticResource {x:Type ComboBoxItem}}"> 
        <EventSetter Event="MouseEnter" Handler="cbProcesses_MouseEnter" /> 
       </Style> 
      </ComboBox.ItemContainerStyle> 
     </ComboBox> 
    </Grid> 
</Window> 

C 번호 : 난 그냥 추가

using System; 
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Linq; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaktionslogik für MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      this.Loaded += MainWindow_Loaded; 
     } 

     void MainWindow_Loaded(object sender, RoutedEventArgs e) 
     { 
      List<ComboBoxItem> list = new List<ComboBoxItem>(); 
      ComboBoxItem item; 
      Process[] _processes = Process.GetProcesses(); 
      foreach (Process process in _processes) 
      { 
       if (!String.IsNullOrEmpty(process.MainWindowTitle)) 
       { 
        item = new ComboBoxItem(); 
        item.Content = process.MainWindowTitle; 
        item.ToolTip = process.MainWindowTitle; 

        list.Add(item); 
       } 
      } 

      cbProcesses.ItemsSource = list; 
     } 

     private void cbProcesses_MouseEnter(object sender, MouseEventArgs e) 
     { 

     } 
    } 
} 

: if (!String.IsNullOrEmpty(process.MainWindowTitle))

관련 문제