3

次のコントロールがあります。

<UserControl >

   <!--<ScrollViewer >-->
       <Viewbox >
           <Canvas/>
       </Viewbox>
   <!--</ScrollViewer>-->

</UserControl>

ScrollViewerを親として動的に追加および削除したいViewBox(たとえば、 をクリックしたときButton):

private void Button_Click(object sender, RoutedEventArgs e)
{
    // Here add or remove ScrollViewer
}

どのようにできるのか?

4

1 に答える 1

3

UserControlあなたの名前が付けられていると仮定しますuserControl

private void Button_Click(object sender, RoutedEventArgs e)
{
    var scrollViewer = userControl.Content as ScrollViewer;
    if (scrollViewer != null)
    {
        var content = scrollViewer.Content;
        scrollViewer.Content = null;
        userControl.Content = content;
    }
    else
    {
        var content = userControl.Content;
        userControl.Content = null;
        userControl.Content = new ScrollViewer { Content = content };
    }
}

なぜに設定するのContentnull、疑問に思うかもしれません。WPFでは、1つの要素を一度に2つの要素の子にすることはできないため、これを実行しようとすると、すぐに例外がスローされます(たとえば、と言うだけですuserControl.Content = scrollViewer.Content;)。

于 2012-06-24T12:03:24.827 に答える