[設定]をクリックするとWPFウィンドウを開くWindowsトレイプロジェクトがあります。WPFウィンドウが開き、一部のコンテンツが正しく表示されますが、動作がおかしい別のクラスにバインドされた2つのリストがあります。
これらのリストは、デバイスとして2つの異なるタブに表示されます。1つのタブには、デバイスを起動できるグラフィック表現があり、もう1つのタブには、デバイスの設定が表示されます。WPFアプリケーションがスタートアッププロジェクトとして設定されている場合、すべてが完全に機能します。ただし、トレイから起動すると、リストが正しく読み込まれ、最初のタブに表示されて起動できますが、2番目のタブにはデバイスが表示されません。それらは両方とも同じデータにリンクされています。
最初はバインディングに問題があると思いましたが、これを解決しようとして数日後、問題はリソースへの参照があるApp.xamlにあると思います。App.xamlを参照していないため、リソースが読み込まれず、リストが正しく設定されていない可能性があります。プロジェクトが機能している場合と機能していない場合の唯一の違いは、一方がスタートアッププロジェクトとしてWPFを持ち、もう一方がトレイを使用してWPFを呼び出すことです。
それでは、私の質問は、App.xamlを参照して、必要なリソースを確実にロードする方法です。
以下は、役立つかもしれない場合に備えて、私のコードの一部です。
App.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>
次の画像は、さまざまな条件下でアプリケーションがどのように動作しているかを示しています。
どんな援助でも大歓迎です。