2016-06-14 18 views
1

したがって、App.xaml.csで定義されている2つのグローバルプロパティのUsernameとCurrentViewがあり、それらをMy Viewsにバインドしています。別のビューでそれらの両方を結合XamlバインディングはApplication.Currentと連携していません

App.xaml.cs

public partial class App : Application, INotifyPropertyChanged 
{ 
    public static object username; 

    public object Username { get { return username; } set { username = value; } } 

    public static Object currentView = new LoginView(); 

    public object CurrentView 
    { 
     get { return currentView; } 
     set { currentView = value; } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 
} 

とIM。 MainView.xaml

<Page Content="{Binding CurrentView, Source={x:Static Application.Current}}">   
    </Page> 

LoginView.xaml

<TextBox HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="165" Margin="218,159,0,0" Text="{Binding Path=Username, Source={x:Static Application.Current}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True}" /> 

MAINVIEWに結合は完全に正常に動作しています。それは、私がCurrentViewをapp.xaml.csで初期化したLoginViewと、ソースが変更されたときに変更されることを示しています。

ただし、LoginViewのテキストボックスにバインドされているユーザー名は更新されません。 カントが問題を理解しているようです。これは、IvがUpdateSourceTriggerをPropertyChangedに設定すると更新されるはずです。

すべてのヘルプははるかに高く評価されます:)

答えて

0

TextBoxのTextプロパティは、タイプstringのですが、あなたのUsernameプロパティは、文字列ではなくオブジェクトにUsernameプロパティを変更することを検討object

です。オブジェクトである必要がある場合は、バインディングが正しく設定されるためにコンバーターが必要です。

また、あなたのバインディングを見れば、OneWayとして設定されていることがわかります。これをTwoWayに変更して、バインディングがソースとターゲットの両方から確実に更新されるようにします。

+0

Ivが文字列に変更されました。まだ残念です:( public static string username; 公開文字列ユーザー名{get {return username;} set {username = value;}} –

+0

私の更新された回答を確認してください! – AlexDrenea

+0

Ivはすべてのモードでそれを試しました。それをTwoWayに保つ –

関連する問題