На основании ваших ответов я решил проблему, как описано ниже.Я публикую это, потому что я думаю, что другие новички в WPF могли бы найти это полезным.
У меня есть одноэлементный класс (InfoPool.cs), который реализует INotifyChangedProperty.Он используется для предоставления привязываемых свойств всего приложения.Этот класс используется ObjectDataProvider в App.xaml.Так что привязать его к свойству
InfoPool.cs очень просто (код синглтона взят из http://csharpindepth.com/Articles/General/Singleton.aspx 5-й версии. Я изменил свойство экземпляра на метод GetInstance (), потому что для OPD требуетсяметод)
public sealed class InfoPool : INotifyPropertyChanged
{
InfoPool()
{
}
public static InfoPool GetInstance()
{
return Nested.instance;
}
class Nested
{
static Nested()
{
}
internal static readonly InfoPool instance = new InfoPool();
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs e)
{
if (PropertyChanged != null)
{
PropertyChanged(this, e);
}
}
private String strProp = "default String";
private Double dblProp = 1.23456;
public String StrProp
{
get { return strProp; }
set
{
strProp = value;
OnPropertyChanged(new PropertyChangedEventArgs("StrProp"));
}
}
public Double DblProp
{
get { return dblProp; }
set
{
dblProp = value;
OnPropertyChanged(new PropertyChangedEventArgs("DblProp"));
}
}
ObjectDataProvider в App.xaml
<Application.Resources>
<ResourceDictionary>
<ObjectDataProvider x:Key="OPDInfo" ObjectType="{x:Type local:InfoPool}" MethodName="GetInstance" d:IsDataSource="True"/>
</ResourceDictionary>
</Application.Resources>
Вот 2 способа привязки к OPD
<StackPanel>
<TextBlock x:Name="tbprop1" Text="{Binding Path=StrProp, Source={StaticResource OPDInfo}}" />
<TextBlock x:Name="tbprop2" Text="{Binding DblProp}" ToolTip="{Binding StrProp}" DataContext="{StaticResource OPDInfo}" />
</StackPanel>
Вот и все.Пожалуйста, прокомментируйте, потому что я новичок в этом; -)