Как сделать всплывающее окно Silverlight с заполнением TextBox его родителем? - PullRequest
3 голосов
/ 10 ноября 2009

У меня есть всплывающее окно в пользовательском элементе управления. Всплывающее окно использует 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 Ответ

2 голосов
/ 10 ноября 2009

Код C # для этого будет выглядеть примерно так:

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

Ключ здесь - сброс поля. Я знаю, что это работает в WPF, скажем, для заполнения Window TextBox. Попробуйте, посмотрите, работает ли он.

...