2013-04-03 73 views
1

我使用WpfNotifyIcon中的App.xaml(WpfNotifyIcon提示)宣布一个文本框,我已经宣布它作为像这样的资源:访问从另一个窗口

<Application x:Class="NotifyIconScratchPad2.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:tb="http://www.hardcodet.net/taskbar" 
      StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <tb:TaskbarIcon x:Key="MyNotifyIcon" IconSource="Icons/stopwatch_start.ico" ToolTipText="Hello world" > 
      <tb:TaskbarIcon.TrayToolTip> 
       <TextBlock x:Name="ChangeThis" Text="Hello world" /> 
      </tb:TaskbarIcon.TrayToolTip> 
      </tb:TaskbarIcon> 
    </Application.Resources> 
</Application> 

要使用此,我宣布它MainWindow.xaml.cs

public TaskbarIcon tb; 
    public Window1 myWindow; 
    public MainWindow() 
    { 
     InitializeComponent(); 
     tb = (TaskbarIcon) FindResource("MyNotifyIcon"); 
    } 

如何从另一个窗口访问文本框ChangeThis

+0

我无法找到答案。我最终在Window本身中声明了notifyIcon,然后从那里访问TextBlock。 – stirredo

回答

0

最终的答案是设置一个事件来做到这一点。

Model-View-View Model模式是完成此操作的好方法。

基本上,您有一个类实现INotifyPropertyChanged接口和两个文本框和数据源之间的双向data binding

+0

我不熟悉MVVM,有没有办法解决它?你能指点我一些示例代码吗?我必须在App.xaml.cs中实现INotifyProperty吗? – stirredo

+1

这是一种使用Windows的不同方式。我猜你在使用Code Behind文件来处理大部分逻辑? –

+0

是的,我使用文件后面的代码。如果我使用数据绑定,我该怎么做?谢谢回答。 – stirredo

0

您可以使用FindName方法:

TextBox txtToChange= tb.FindName("txt_ChangeThis") as TextBox; 
+0

当我做'TextBlock textBlock = tb.FindName(“ChangeThis”)作为TextBlock;',我得到'null'回来。它不工作。还有什么我可以做的? – stirredo