2个XAML文件之间的数据绑定

时间:2013-11-30 01:35:29

标签: c# xaml data-binding windows-phone-8 visual-studio-2013

我正在使用C#创建一个WP8应用程序。

我有2个代表2页的XAML文件:MainPageInfoPage

我希望两个页面的标题都相同。

因此MainPage的标题标题设置为“MyApp”

现在,是否可以将InfoPage的标题标题绑定到MainPage中的标题?因此,两个XAML都将“MyApp”作为标题标题。

如果这不可能,为什么?

由于

3 个答案:

答案 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使用您的资源。还有更多的博客和网站,你可以找到更多。