2012-09-25 46 views
0

我有一个WPF应用程序,我需要移动到一个托盘。它目前直接在UI中启动,并且有两个选项卡。在第二个选项卡上,有几个可折叠的容器用于保存关联设备的设置。设备可以动态添加或删除。调试WPF XAML

我已添加托盘应用程序,并添加了代码以调用应用程序的设置。一切正常,除了可折叠的容器是空的。我追踪了代码以确认他们应该有对象。

我觉得奇怪的是,如果我将默认应用程序设置为UI,但它们在从托盘启动UI时不起作用。我已经包含下面的XAML的一部分:

<c:CollapsibleSection Header="Senders"> 
     <c:CollapsibleSection.CollapsedContent> 
      <c:RepeatControl Margin="30,0,0,0" ItemsSource="{Binding SendersList}" 
           ItemType="{x:Type m:Sender}" List="{Binding SendersList}" 
           ItemTemplate="{StaticResource SenderSummary}"/> 
     </c:CollapsibleSection.CollapsedContent> 
     <Border BorderThickness="1" BorderBrush="Chocolate" Margin="30,0,0,0"> 
      <c:RepeatControl ItemsSource="{Binding SendersList}" ItemType="{x:Type m:Sender}" List="{Binding SendersList}" ItemTemplate="{StaticResource SenderTemplate}"/> 
     </Border> 
    </c:CollapsibleSection> 

我不是很熟悉WPF,并想知道如果有,我发现的工具在2010年和2012年进行调试在VS 2008的XAML的好方法,以及2005年的几个旧帖子提供了基本的解决方法,但2007年的搜索量并不多。

我也希望有人可能知道什么可能会导致它在UI作为启动时启动时正常工作项目,但不从另一个项目调用。该项目最初是作为启动项目的UI开发的,托盘是一个单独的项目,如果有帮助的话。 UI也由几个类组成,这两个类都驻留在主项目文件夹和UI文件夹中。但是,似乎所有的xaml都被访问(创建了CollapsibleSection的类的其他部分)。

没有抛出异常。

附加信息

我也尝试添加一个测试文本块,看是否绑定文本将出现在发件人,但仍没有显示出来。添加的代码如下:

<TextBlock Name="testTextBlock"> 
    <ContentControl Content="This is just a test... " Foreground="Red">/ContentControl> 
</TextBlock> 

感谢您的任何帮助。

+2

我对Visual Studio 5的最高愿望是调试XAML。您可以将PresentationTrace设置为高来获得输出。 – Paparazzi

+0

谢谢Blam,回复。不幸的是,PresentationTrace似乎是VS 2010中的一个功能。该项目于2008年开发。我想现在是时候将其转换。再次,谢谢。 – Tim

+0

如果你要转换,然后去2012年。PresentationTrace高不是一个真正的调试器。我只是输出绑定错误。 – Paparazzi

回答

0

我终于想出了这一个。不必实例化UI,必须调用整个WPF应用程序才能运行。这将导致App.xaml加载字典,然后其他WPF表单可以访问它。这是通过下面的代码完成:

private void settingsEvent_Click(object sender, EventArgs e) 
    { 
     app.InitializeComponent(); 
     gui = new Sender_Receiver.mainWindow(); 
    } 
    private static App app = new App(); 

这是通过实验发现,让我确信它是不是最好的做法,但它的工作原理,而现在,这是我需要的东西。

谢谢你,布莱姆,为你的贡献!我确实发现他们很有帮助。