如何使用TextBox填充其父级来创建Silverlight弹出窗口?

时间:2009-11-09 21:47:42

标签: silverlight-3.0 popup

我在用户控件中有一个弹出窗口。弹出窗口使用TextBox显示控件生成的数据的文本预览。

如何让弹出窗口大小本身由用户控制它内部?使用如下所示的代码,我发现文本框的大小根据其内容而定,弹出框的大小根据文本框进行调整。

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

<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>

1 个答案:

答案 0 :(得分:2)

执行此操作的C#代码类似于:

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

这里的关键是重置保证金。我知道这可以在WPF中使用,例如,用Window填充TextBox。试一试,看看它是否有效。