2008-11-26 77 views
4

我想在我的主應用程序和用戶控件之間共享一個ObjectDataProvider資源。我在包含在應用程序和用戶控件中的單獨的資源字典文件中定義odp。在WPF中共享ObjectDataProvider

<ObjectDataProvider x:Key="AsymmetricFrameHolder" 
    ObjectType="{x:Type data:DataFrameAsymmetric}"/> 

然後我嘗試訪問此主應用程序如下:

ObjectDataProvider odp = (ObjectDataProvider)Resources["AsymmetricFrameHolder"]; 
return (DataFrameAsymmetric)odp.ObjectInstance; 

並與將它綁定在用戶控件:

<Grid Name="grid" Height="Auto" Width="Auto" 
    DataContext="{StaticResource AsymmetricFrameHolder}"> 

然後:

<TextBox Name="TextBox_Length" Grid.Row="0" Grid.Column="1" 
    Text="{Binding Path=Length }"/> 

這會創建2個DataFrameAsymmetric實例。一個在主應用程序中,另一個在用戶控件中。

如何設置程序以創建單個共享實例?

+1

其實這段代碼幫了我一大堆!我想知道如何刷新objectdataprovider。謝謝! – wonea 2010-06-10 15:07:11

回答

0

如果你可以採取不同的路線,這個問題可以很容易地解決。將你的類DataFrameAsymmetric中Singleton class,並在任何地方,你想用它的實例中使用的波紋管

<Grid Name="grid" Height="Auto" Width="Auto" DataContext="{Binding Source={x:Static data:DataFrameAsymmetric.Instance}}"> 

在你的代碼的任何部分,你將能夠通過

DataFrameAsymmetric.Instance 
訪問實例
+0

感謝您的答案,但單身人士不會在這裏工作。我需要在程序中創建多個類的實例。 – 2008-11-26 18:15:35