0

Silverlight5

ボタンをクリックしてTab1Dataをクリックします。パラメータをTab2_1Dataに渡します。

現在、各UserControlがこのヘルパーを使用して参照できるMainPageのグローバルパブリックプロパティ(!)を使用して実行しています

非MVVMアプローチを使用してパラメーターを渡すより良い方法はありますか?

 <controls:TabControl Name="TabOverallMain">
                        <!-- Tab 1 -->
                        <controls:TabItem Header="Home Screen" IsSelected="True">
                            <UserControls:Tab1Data />
                        </controls:TabItem>

                        <!-- Tab 2 -->
                        <controls:TabItem Header="Admin">
                            <Grid>
                                <controls:TabControl>
                                    <!-- Tab 2_1 -->
                                    <controls:TabItem Header="Users">
                                        <UserControls:Tab2_1Data />
                                    </controls:TabItem>

編集:これを使用して、Tab2_1DataコントロールにDependencyPropertyを実装しました:

 public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register("Caption", typeof(string), typeof(WidgetControl),null);

        public string Caption
        {
            get { return (string)GetValue(CaptionProperty); }
            set { SetValue(CaptionProperty, value); }
        }

次に、Tab1Dataユーザーコントロールから次のように参照しました。

wid.Caption = "hello world";

これは今のところ私にとっては問題ありません..2つの間のデータバインディングもv.goodに見えますが!

4

1 に答える 1

0

MVVM を使用したくないので、データ バインディングを使用してみてください。最初のコントロールの依存関係プロパティとしてパラメーターを公開する必要があります。

ここにいくつかの擬似コードがあります。MyParam という名前の Tab1Data に依存関係プロパティを作成します。

    public static readonly DependencyProperty MyParamProperty = DependencyProperty.Register("MyParam",
                int, typeof(Tab2_1Data), null);

public int MyParam
{
    get { return (int)GetValue(MyParamProperty); }
    set
    {
        SetValue(MyParamProperty, value);
    }
}

<controls:TabItem Header="Home Screen" IsSelected="True">
    <UserControls:Tab1Data x:Name="OneCtrl"  />
</controls:TabItem>

次に、ParamFromControlOne などと呼ばれる 2 番目のコントロールに (上記と同様の) 依存関係プロパティを作成し、それらをバインドします。

<UserControls:Tab2_1Data ParamFromControlOne="{Binding MyParam, ElementName=OneCtrl}" />

それはテストされておらず、メモ帳を使用してまとめられていませんが、それは私がたどる道です

于 2012-12-19T20:09:26.230 に答える