2014-05-11 94 views
1

我正在創建一個WPF窗口,其中包含文本框。但是,當我以調試模式(F5)運行項目時,我無法編輯我創建的文本框,也無法從我創建的列表框中進行選擇。我用Google搜索,發現WPF和Win32需要溝通,能接受鍵盤輸入,並得到了這3行:在WPF中創建的文本框在運行時不可編輯

Window w = new Window1(); 
System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(w); 
w.Show(); 

不過,我是新來的C#,所以我完全不知道該往哪兒插此C#代碼。我將System.Windows.Forms和WindowsFormIntegration引用添加到我的項目中。

我正在設計的窗口將成爲應用程序啓動時出現的第一個窗口,因此我需要此窗口中的文本框可編輯,而無需啓動另一個窗口。請引導我。

編輯:這是我的XAML代碼:

<Window x:Name="Window1" x:Class="Myproject.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Risk Assessment" 
Height="741" Width="1216.091"> 

<GroupBox x:Name="GroupBox1"> 
    <Grid> 
     <TextBox x:Name="Length" IsReadOnly ="False" IsEnabled="True" /> 
    </Grid> 
</GroupBox> 
</Window> 

這是我的C#代碼:

namespace Myproject 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent();   
     } 
    } 
} 

編輯2:我修改的第一行中的App.xaml這樣的代碼:

<Application x:Class="Myproject.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Startup="Application_Startup"> 

而在App.Xaml.cs我加入這個片段:

private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     MainWindow win = new MainWindow(); 
     ElementHost.EnableModelessKeyboardInterop(win); 
     win.Show(); 
     System.Windows.Threading.Dispatcher.Run(); 
    } 

但仍然沒有運氣。我哪裏錯了?

+0

我看到這裏沒有文本框。你想用ElementHost做什麼? –

+0

我有我的文本框的XAML代碼。當我搜索互聯網時,它提供的所有內容都是上述3行代碼,以使WPF窗口能夠通過文本框接受文本輸入。但是,我不知道在哪裏添加這3行代碼。那是我希望能得到一些幫助的地方。 – Julyflowers

+0

post Window1 XAML,你可以刪除第二行,如果你只是想創建一個WPF中的文本框的窗口 – ZSH

回答

1

試圖改變自己的Application.xaml到包括StartupUri

<Application x:Class="Myproject.App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    StartupUri="Window1.xaml" 
> 

刪除所有你在CS文件中有啓動代碼。

或者

更改CS的代碼如下:

Window1 window1 = new Window1(); 
this.ShutdownMode = ShutdownMode.OnMainWindowClose; 
this.MainWindow = window1;