3

我有以下控件:

<UserControl >

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

</UserControl>

我想动态添加和删除ScrollViewer作为我的ViewBox父母(例如,当我点击 a 时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 };
    }
}

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

于 2012-06-24T12:03:24.827 回答