0

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

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

如果我将默认应用程序设置为 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 不是很熟悉,想知道是否有在 VS 2008 中调试 xaml 的好方法。我在 2010 年和 2012 年找到了工具,以及 2005 年的一些旧帖子,它们提供了基本的解决方法,但是我2007 年没有发现太多。

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

没有抛出异常。

附加信息

我还尝试添加一个 test-textblock 以查看未绑定的文本是否会出现在发件人中,但仍然没有显示任何内容。添加的代码如下:

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

感谢您的任何帮助。

4

1 回答 1

0

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

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

这是通过实验发现的,所以我确信这不是最佳实践,但它确实有效,而且现在,这正是我所需要的。

谢谢你,Blam,你的贡献!我确实发现它们很有帮助。

于 2012-10-02T15:22:30.553 回答