根据你的回答,我解决了如下所述的问题。我发布它,因为我猜想WPF中的其他初学者可能会发现它很有用。
我有singleton类(InfoPool.cs)实现INotifyChangedProperty。它用于提供应用程序中可绑定的属性。该类由App.xaml中的ObjectDataProvider使用。所以这是非常“简单”绑定到一个属性
InfoPool.cs(Singleton的代码是从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"));
}
}
在App.xaml中的ObjectDataProvider的
<Application.Resources>
<ResourceDictionary>
<ObjectDataProvider x:Key="OPDInfo" ObjectType="{x:Type local:InfoPool}" MethodName="GetInstance" d:IsDataSource="True"/>
</ResourceDictionary>
</Application.Resources>
的下面是绑定到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>
种方式
就是这样。请评论,因为我是新来的;-)
如果他这样做,UserControl中的一切都将Info作为DataContext,并且将无法绑定到其他东西... – 2010-08-18 13:48:22
很高兴知道。感谢:) – Crispy 2010-08-18 13:50:08
所以这种绑定更容易我认为,在这个控制中不需要绑定到其他人 – 2010-08-18 14:38:09