2009-11-09 37 views
3

我有一个用户控件内弹出。该弹出窗口使用文本框来显示控件生成的数据的文本预览。如何使用TextBox填充其父项的Silverlight弹出窗口?

如何将弹出窗口大小本身制作为用户控件的内部?使用如下所示的代码,我发现文本框的大小根据其内容而定,弹出窗口的大小根据文本框来确定。

它工作正常,如果我在我的行和列定义中使用固定大小,但我想要弹出调整自身以匹配用户控件(它反过来匹配浏览器)。

<UserControl 
    <!-- usual stuff here --> 
> 
<Grid> 

<!-- layout for the user control here --> 
<!-- and after that my popup: --> 
<Popup Name="MyPopup"> 
    <Border BorderBrush="Black" BorderThickness="2" > 
     <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="22"></RowDefinition> 
      <RowDefinition Height="*"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 

     <TextBlock Grid.Row="0" Text="Preview:" Margin="5" ></TextBlock> 
     <TextBox 
       Grid.Row="1" 
       Name="MyTextBox" 
       IsReadOnly="True" 
       HorizontalScrollBarVisibility="Visible" 
       VerticalScrollBarVisibility="Visible" 
       TextWrapping="Wrap" 
       Margin="5" 
       > 
      </TextBox> 
     </Grid> 
    </Border> 
</Popup> 

</Grid></UserControl> 

回答

2

的C#代码来执行,这将是这样的:

textBox1.Width = UserControl.Width; 
    textBox1.Height = UserControl.Height; 
    textBox1.Margin = UserControl.Margin; 

这里的关键是复位保证金。我知道这在WPF中起作用,比如说用TextBox填充Window。试一试,看看它是否有效。

+0

奇怪的是,我的宽度和高度都是'NaN',而我的ActualWidth和ActualHeight看起来很随意。猜猜我需要阅读有关布局系统。不过,我可以证实,当我按照您的建议设定保证金属性时,我会得到不同的结果,谢谢您的提示。 – Eric 2009-11-10 15:39:58

相关问题