WPF

2011-07-21 16 views
0
私はApp.xaml.csクラスの静的プロパティにバインドする必要があり、これまで使用して行っている

WPF

Property="{Binding Source={x.Static Application.Current}, Path=SomePath}" 

アプリケーションは直接実行されているときに、[OK]を動作しますが、しアプリケーションが別のアプリケーションから起動されると、これらのバインディングは動作しません.Application.Currentは、xamlが置かれているアプリケーションではなく、親アプリケーションを指しています。

親アプリケーションのプロパティではなく、即時のApp.xaml.csファイルプロパティにどのようにバインドするのですか?

希望は意味があります!

+0

意味「別のアプリケーションから起動し、」んか?それは別のプロセスですか? –

+0

私はそのことについて特に明確ではなかった!すなわち、Application1はApplication2への参照を有する。次に、Application1の下で、Application2.MainWindowのようなものをapp2Main =新しいApplication2.MainWindow();が呼び出されます。 –

+0

その場合、Application2のインスタンスは作成されていません... –

答えて

1

だから私は、これまでに発見した一つの解決策は、App.xaml.csと私がバインドしようとしているXAMLの間でクラスを置くことです:

App.xaml.cs:

public partial class App : Application 
{ 
    public static string SomeText; 

    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 
     SomeText = "Here is some text"; 
    } 
} 

MyProperties.cs:

public class MyProperties 
{ 
    public static string SomeText 
    { 
     get { return App.SomeText; } 
    } 
} 

MainWindow.xaml:

<Window.Resources> 
    <local:MyProperties x:Key="properties"/> 
</Window.Resources> 

<Grid> 
    <TextBlock Text="{Binding Source={StaticResource properties}, 
           Path=SomeText}"/> 
</Grid> 

他の提案はまだ歓迎以上です:)