所以我在App.xaml.cs中定义了两个全局属性Username和CurrentView,我将它们绑定在我的视图中。
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));
}
}
}
我在不同的视图中将它们绑定在一起。 的 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中的绑定工作得很好。它向我展示了我已经在app.xaml.cs中初始化了CurrentView的LoginView,并且在更改源时它会发生变化。
但是,用户名未更新,与LoginView中的文本框绑定。 似乎无法弄清楚问题。它应该更新为Iv将UpdateSourceTrigger设置为PropertyChanged。
任何帮助将不胜感激:)
答案 0 :(得分:0)
TextBox
的Text属性属于string
类型,但您的Username
属性为object
考虑将Username
属性更改为字符串而不是对象。如果你需要它作为一个对象,你需要有一个转换器,以便绑定正确设置它。
另外,看着你的装订,我注意到你把它设置为OneWay。将其更改为TwoWay以确保Binding从Source和Target更新两种方式。