我们在一个dll(Child.dll)中有wpf用户控件(UserControl.xaml)。
我们将“Child.dll”的引用添加到另一个应用程序(ParentApplication)
在父应用程序中,我们有一个stackpanel,我们必须使用用户控件构造函数动态添加用户控件。
ParentApplication包含:
MainWindow.xaml
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:fa="http://schemas.fontawesome.io/icons/" x:Class="ParentApplication.MainWindow"
xmlns:Mvis="clr-namespace:Mvis;assembly=Mvis"
Title="MainWindow" Height="1000" Width="1000" WindowStartupLocation="CenterScreen" WindowState="Maximized">
<Grid>
<TabControl>
<TabItem Cursor="Hand">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="ChildApplication"/>
</StackPanel>
</TabItem.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" CanContentScroll="True" Grid.Row="0" >
<StackPanel x:Name="userControlPlaceHolder" Background="Blue"/>
</ScrollViewer>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Window>
所以我们在 MainWindow.xaml.cs 上这样做:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
UserControl userControl = new UserControl();
this.userControlPlaceHolder.Children.Add(userControl);
}
}
问题1:用户控件仅显示在屏幕的一半高度。
**注意:我们没有为UserControl.xaml设置任何高度,我们不能像userControl.Height = 200那样设置高度控制高度; **
问题2:我们在MainWindow.xaml中使用了滚动查看器,但是当我们调整应用程序窗口的大小时,不会显示垂直滚动条。
答案 0 :(得分:2)
删除StackPanel
并将UserControl
直接添加到ScrollViewer
:
<TabItem Cursor="Hand">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="ChildApplication"/>
</StackPanel>
</TabItem.Header>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<ScrollViewer x:Name="sv" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" CanContentScroll="True" Grid.Row="0" >
</ScrollViewer>
</Grid>
</TabItem>
this.sv.Content = userControl;
ScrollViewers
和StackPanels
无法很好地协同工作: