2009-11-09 2 views
3

У меня есть всплывающее окно в пользовательском элементе управления. Всплывающее окно использует TextBox для отображения текстового предварительного просмотра данных, созданных элементом управления.Как создать всплывающее окно Silverlight с 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> 

ответ

2

C# код, чтобы сделать это было бы что-то вроде:

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

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

+0

Странно, моя ширина и высота - это «NaN», а мои ActualWidth и ActualHeight кажутся случайными. Думаю, мне нужно прочитать о макетной системе. Однако я могу подтвердить, что получаю разные результаты, когда устанавливаю свойство Margin, как вы предлагаете, спасибо за этот совет. – Eric

Смежные вопросы