我有以下控件:
<UserControl >
<!--<ScrollViewer >-->
<Viewbox >
<Canvas/>
</Viewbox>
<!--</ScrollViewer>-->
</UserControl>
我想动态添加和删除ScrollViewer
作为我的ViewBox
父级(例如,当我点击Button
时):
private void Button_Click(object sender, RoutedEventArgs e)
{
// Here add or remove ScrollViewer
}
我该怎么办?
答案 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;
)。