我正在使用C#创建一个WP8应用程序。
我有2个代表2页的XAML文件:MainPage
和InfoPage
我希望两个页面的标题都相同。
因此MainPage
的标题标题设置为“MyApp”
现在,是否可以将InfoPage
的标题标题绑定到MainPage
中的标题?因此,两个XAML都将“MyApp”作为标题标题。
如果这不可能,为什么?
由于
答案 0 :(得分:1)
是创建一个辅助类,用于存储变量并触发属性更改事件。然后在main或infopage中创建辅助类的静态对象。
所以要调用绑定属性。
public class BindHelper: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void PropertyChanged(string info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
string _title;
public string Title
{
get
{
return _title;
}
set
{
_title= value;
PropertyChanged("Title");
}
}
}
然后在main声明一个对象,非常简单的例子。
public static BindHelper binder = new BindHelper();
binder.Title = "My Title";
从信息页面进行更改:
MainWindow.binder.Title = "Something Else";
然后在两者中执行相同的绑定属性和datacontext设置。 对于infopage,只需设置:
control.DataContext = MainWindow.binder;
答案 1 :(得分:1)
您可以通过在App.xaml中创建样式来实现此目的
<Style x:Key="PageHeaderTitleTextBlock" TargetType="TextBlock">
<Setter Property="Text" Value="My App" />
</Style>
并在两个页面中设置样式
答案 2 :(得分:0)
根据您通过xaml使用LocalizedResources的评论,您已添加Binding Path并显示要使用的类,例如这将起作用 在App.xaml中添加指向您的类LocalizedStrings的键:
<Application.Resources xmlns:my="clr-namespace:NameSpaceWhereLocalizedStrings">
<my:LocalizedStrings x:Key="Localized"/>
</Application.Resources>
clr-namespace: - 是一个命名空间,你有LocalizedStrings(可能是你的主命名空间)。然后,您可以在任何其他xaml文件中使用LocalizedResources:
<TextBlock Text="{Binding LocalizedResources.appName, Source={StaticResource Localized}}"/>
appName - 是AppResources.resx中的变量(当然检查它是否公开)。 LocalizedResources是一个您可能在LocalizedStrings.cs中默认使用的类:
public class LocalizedStrings
{
private static AppResources _localizedResources = new AppResources();
public AppResources LocalizedResources { get { return _localizedResources; } }
}
本地化资源非常有用,因为有了它们,您可以本地化您的应用程序,以便用户可以使用不同语言MSDN使用您的资源。还有更多的博客和网站,你可以找到更多。