1

いくつかのタブアイテムを使用するタブコントロールがある Silverlight ユーザーコントロールがあります。これで、各タブ項目は別のユーザー コントロールになります。これらのユーザー コントロール タブアイテムの 1 つのオブジェクトにアクセスする方法があるかどうか疑問に思っていました。

たとえば、メインのユーザー コントロールに xaml があるとします。

<controls:TabControl x:Name="TabControl" Grid.Row="1" Grid.Column="1" Foreground="#234BC3">
            <controls:TabItem Header="Prestaties" x:Name="TabPres" Visibility="Collapsed">
                <nsl:PrestatiesUC></nsl:PrestatiesUC>
            </controls:TabItem>
            <controls:TabItem Header="Protocollen" x:Name="TabProt" Visibility="Collapsed">
                <nsl:ProtocollenUC></nsl:ProtocollenUC>
            </controls:TabItem>
            <controls:TabItem Header="Adt" x:Name="TabAdt" Visibility="Collapsed">
                <nsl:AdtUC></nsl:AdtUC>
            </controls:TabItem>
        </controls:TabControl>

そして、私の PrestatiesUC ユーザーコントロールには、オブジェクトがあります:

<Button x:Name="btnReSend" Content="Resend" Width="75" Height="25" Margin="10" Click="resend_Button"/>

メインのユーザーコントロールコードで動的に起動時の可視性を無効にするにはどうすればよいですか?

私は次のようなことを試しました:

PrestatiesBAMUC tmp =  new PrestatiesBAMUC();
tmp.btnReSend.Visibility = Visibility.Collapsed;

しかし、これはうまくいきませんでした。

何か案は?

4

1 に答える 1

1

メインのユーザーコントロールLoadedイベントでは、これは機能するはずです:-

((PrestatiesUC)TabPres.Content).btnReSend.Visibility = Visibility.Collapsed;

しかし、それは悪臭がします。一般に、メインページのようなものに、UserControlが内部でどのように構成されているかについての深い知識を持たせるのは良い考えではありません。

「Prestaties」でボタンの可視性をisLoadedイベントに設定するのは良いことではないでしょうか。

そうでない場合は、PrestatiesUC(およびおそらく関連する他のユーザーコントロール)によって実装されるインターフェイスを作成します。メインページでの読み込み中に、タブのセットを列挙し、このインターフェイスのメソッドを呼び出して、状態オブジェクトを渡します。次に、ユーザーコントロールは、含まれているコントロールのステータスについて選択を行います。

それが上にあるように思われる場合は、少なくともボタン自体を非表示にするプロパティをユーザーコントロールに追加します。-

 // In PrestiesUC
 public bool ReSendVisible
 {
    get { return btnReSend.Visibility == Visibility.Visible; }
    set { btnReSend.Visibility = value ? Visibility.Visible : Visibility.Collapsed; }
 }

これで、メインユーザーコントロールのコードは次のようになります。-

((PrestatiesUC)TabPres.Content).ReSendVisible = False;
于 2010-01-25T13:10:40.543 に答える