我有一个 Windows 托盘项目,当单击设置时会打开一个 WPF 窗口。WPF 窗口打开并正确显示一些内容,但我有两个列表绑定到另一个具有奇怪行为的类。
这些列表作为设备显示在两个不同的选项卡上。在一个选项卡上,有一个可以启动设备的图形表示,另一个选项卡显示设备的设置。当 WPF 应用程序设置为启动项目时,一切正常。但是,当我从托盘启动它时,列表会正确加载,并显示在第一个选项卡中,可以在其中启动它们,但第二个选项卡显示不存在任何设备。它们都链接到相同的数据。
起初,我认为绑定存在问题,但经过几天尝试解决此问题后,我认为问题出在 App.xaml 中,其中存在对资源的引用。我怀疑因为我没有引用 App.xaml,所以没有加载资源,并且没有正确设置列表。项目工作和不工作的唯一区别是一个有WPF作为启动项目,另一个使用托盘调用WPF。
那么,我的问题是如何引用 App.xaml 以确保加载所需的资源。
以下是我的一些代码,以防万一。
应用程序.xaml
<Application x:Class="Sender_Receiver.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Shell.xaml">
<Application.Resources>
<ResourceDictionary Source="Themes\Generic.xaml"/>
</Application.Resources>
当前调用打开 WPF
private void settingsEvent_Click(object sender, EventArgs e)
{
gui = new Sender_Receiver.mainWindow(); // mainWindow() located in Shell.xaml
gui.Show();
}
显示设备的代码。CollapsibleSection 实现 Expander,RepeatControl 实现 ItemsControl。
<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>
下图显示了应用程序在不同条件下的表现。
任何帮助将不胜感激。