c# - 在 WPF 中共享 ObjectDataProvider

标签 c# wpf objectdataprovider

我正在尝试在我的主应用程序和用户控件之间共享一个 ObjectDataProvider 资源。我在应用程序和用户控件中包含的单独资源字典文件中定义 odp。

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

然后我尝试在主应用程序中访问它,如下所示:

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

并将其绑定(bind)在用户控件中:

<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 实例。一个在主应用程序中,一个在用户控件中。

如何设置程序以便创建单个共享实例?

最佳答案

如果你能走不同的路线,这个问题就很容易解决了。将您的类 DataFrameAsymmetric 转换为 Singleton class 在任何你想使用它的实例的地方,如下所示

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

在代码的任何部分,您都可以通过以下方式访问实例

DataFrameAsymmetric.Instance

关于c# - 在 WPF 中共享 ObjectDataProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/321048/

相关文章:

wpf - 在 WebBrowser 控件上显示装饰器

c# - 类型初始化异常 : The type initializer for '<Module>' threw an exception

c# - ComboBox SelectedItem 未显示其值

c# - WPF 组合框作为 System.Windows.Media.Colors

c# - 让你的集合线程安全?

c# - 是否可以制作WinRT服务

c# - 这个SQL可以在LINQ中完成吗?

c# - 如何查看我们连接到的主机

c# - 如何在 xaml 中使用 List<T>?

c# - 将 XAML ObjectDataProvider 转换为 C#