4

メイン アプリケーションとユーザー コントロールの間で ObjectDataProvider リソースを共有しようとしています。アプリとユーザー コントロールに含まれる別のリソース ディクショナリ ファイルで odp を定義します。

<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 }"/>

これにより、DataFrameAsymmetric の 2 つのインスタンスが作成されます。メイン アプリに 1 つ、ユーザー コントロールに 1 つ。

単一の共有インスタンスが作成されるようにプログラムを設定するにはどうすればよいですか?

4

1 に答える 1

0

別のルートを取ることができれば、この問題は簡単に解決できます。Class DataFrameAsymmetric をSingleton クラスに変換し、そのインスタンスを使用する任意の場所で次のように使用します

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

コードのどの部分でも、次の方法でインスタンスにアクセスできます

DataFrameAsymmetric.Instance
于 2008-11-26T16:45:13.003 に答える