노무현 전 대통령 서거 - 삼가 고인의 명복을 빕니다
WPF - 해당되는 글 3건
 
(Visual Studio 2008) 에서 Command Argument 설정하는 방법
 
# Project -> <YourProjectName> Properties ->
                                                     Configuration Properties -> Debugging -> Command Arguments



1.  App.xaml.cs에 onStartup메소드를 재정의 한다.  

  • ArbitraryArgname 부분에 Argument명을 설정할수 있다.
  • Args 의 배열을 늘려서 더 많은 Argumnet인자를 메인으로 보낼수 있다.
   1: protected override void OnStartup(StartupEventArgs e)
   2: {
   3:     if (e.Args != null && e.Args.Count() > 0)
   4:     {
   5:         this.Properties["ArbitraryArgName"] = e.Args[0];
   6:     }
   7:  
   8:     base.OnStartup(e);
   9: }



 2.  생성자에서 Loaded 이벤트를 생성한다.
  • 설정했던 Argument명으로 넘어온 인자를 받아낸다. 
   1: public MainContainer()
   2: {
   3:     InitializeComponent();
   4:  
   5:     // Make sure we handle command line args:
   6:     this.Loaded += new RoutedEventHandler(MainContainer_Loaded);
   7: }
   8:  
   9: void MainContainer_Loaded(object sender, RoutedEventArgs e)
  10: {
  11:     if (Application.Current.Properties["ArbitraryArgName"] != null)
  12:     {
  13:         string fname = Application.Current.Properties["ArbitraryArgName"].ToString();
  14:         // Act on the file...
  15:     }
  16: }
Trackbacks 0 | Comments 0

ComboBoxItem으로 Item을 추가 한경우

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
            ComboBox a = sender as ComboBox;
            
            ComboBoxItem c = a.SelectedItem as ComboBoxItem;

            string selected_text = c.Content;           
 }
 

비하인트 코드로 Item을 추가한경우 ex) comboBox1.Items.Add(" temp_item ");

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox a = sender as ComboBox;

string selected_text = a.SelectedValue.ToString();
}
Trackbacks 0 | Comments 0
이번에는 WinForm에서 WPF Dialog를 띠우는 방법이다.  WPF에서 Window UserContlor을 호스팅해서 사용하게 되었다. 하지만 문제가 생긴것은 호스팅되어 사용하려고 한 Window UserContlor컨트롤에서 Dialog를 호출할때 생겼다.  결론만 말하자면 WPF에서 Form(WindowsForm)을 그냥 생성해서 부르는 꼴이 되어버려서 호출할때 오류를 발생 시켰다.


그래서 역으로 생각해 WindowsForm에서 WPF(Windows)를 호출하는 방법을 택했다.
※ 문제는의 원인은 WindowsForm과 WPF는 관리되는 방식이 틀리기 때문이다.




WindowInteropHelper Class(MSDN)
   - WPF(Windows Presentation Foundation)와 Win32 코드 사이의 상호 운용을 지원하는 클레스

< 링크 >




WindowInteropHelper wih = new WindowInteropHelper(myDialog);
wih.Owner = ownerHwnd;   // ownerHwnd는 WinForm의 핸들값을 주는 코와 대체한다.
                                       //  ex) this.Handle; 
myDialog.ShowDialog();   

myDialog는 당연히 WPF로 생성한 객체이다.



- 참고 -
WPF로 객체를 생성하려고 변수 선언을 했을떄 어셈블리 참조가 되어 있지 않다고 에러가 났다. 
그냥 WPF에서 참조 되어있는 모든것을 똑같이 WinForm에서 참조 시켜서 해결했다. - 왼지 미방책인 느낌
Trackbacks 0 | Comments 0

고독한개발자's Blog is powered by Daum & tistory