如何动态添加删除父控件

时间:2012-06-24 11:37:54

标签: c# wpf

我有以下控件:

<UserControl >

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

</UserControl>

我想动态添加和删除ScrollViewer作为我的ViewBox父级(例如,当我点击Button时):

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

我该怎么办?

1 个答案:

答案 0 :(得分:2)

假设您的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 };
    }
}

为什么要将Content设置为null,您可能想知道?因为WPF不会让一个元素同时成为两个元素的子元素,并且如果你试图这样做会立即抛出异常(例如只是说userControl.Content = scrollViewer.Content;)。