с очень простым примером из примера текстового поля WPF изестероидов:
, если вы смотрите на это в редакторе кода, строки, на которые вы хотите посмотреть, это: Строка 4 - ваша переменная Строка 33 - определение переменной в качестве текста для текстового блока [ 117]
#region XAML window definition
# Right-click XAML and choose WPF/Edit... to edit WPF Design
# in your favorite WPF editing tool
$adminname = "Guyver1"
$xaml = @"
Please enter your details:
$adminname
Email
"@
#endregion
#region Code Behind
function Convert-XAMLtoWindow
{
param
(
[Parameter(Mandatory=$true)]
[string]
$XAML
)
Add-Type -AssemblyName PresentationFramework
$reader = [XML.XMLReader]::Create([IO.StringReader]$XAML)
$result = [Windows.Markup.XAMLReader]::Load($reader)
$reader.Close()
$reader = [XML.XMLReader]::Create([IO.StringReader]$XAML)
while ($reader.Read())
{
$name=$reader.GetAttribute('Name')
if (!$name) { $name=$reader.GetAttribute('x:Name') }
if($name)
{$result | Add-Member NoteProperty -Name $name -Value $result.FindName($name) -Force}
}
$reader.Close()
$result
}
function Show-WPFWindow
{
param
(
[Parameter(Mandatory=$true)]
[Windows.Window]
$Window
)
$result = $null
$null = $window.Dispatcher.InvokeAsync{
$result = $window.ShowDialog()
Set-Variable -Name result -Value $result -Scope 1
}.Wait()
$result
}
#endregion Code Behind
#region Convert XAML to Window
$window = Convert-XAMLtoWindow -XAML $xaml
#endregion
#region Define Event Handlers
# Right-Click XAML Text and choose WPF/Attach Events to
# add more handlers
$window.ButCancel.add_Click(
{
$window.DialogResult = $false
}
)
$window.ButOk.add_Click(
{
$window.DialogResult = $true
}
)
#endregion Event Handlers
#region Manipulate Window Content
$window.TxtName.Text = $env:username
$window.TxtEmail.Text = 'test@test.com'
$null = $window.TxtName.Focus()
#endregion
# Show Window
$result = Show-WPFWindow -Window $window
#region Process results
if ($result -eq $true)
{
[PSCustomObject]@{
EmployeeName = $window.TxtName.Text
EmployeeMail = $window.TxtEmail.Text
}
}
else
{
Write-Warning 'User aborted dialog.'
}
#endregion Process results
Необходимо использовать параметр "авторасположения" на VBox, как говорится в документации:
"По умолчанию размер контейнера VBox является достаточно большим для содержания изображения в нем первоначальный размер. Если Вы отключаете обновления расположения и используете эффект Масштабирования увеличить изображение или использовать эффект Перемещения изменить местоположение изображения, изображение могло бы расшириться мимо границ контейнера VBox.
Вы устанавливаете автосвойство макета на ложь, таким образом, контейнер VBox не изменяет размер, как изображение изменяет размер. Если изображение растет до размера так, чтобы оно расширилось вне границ контейнера VBox, контейнер добавляет полосы прокрутки и отсекает изображение на его границах.
Я надеюсь, что это поможет Вам.
AutoLayout=false, кажется, только препятствует тому, чтобы расположение было повторно выполнено когда детское изменение размера. Однако, если Вы добавите или удалите детей, то расположение повторно выполнится так или иначе.
Установка minHeight=0 действительно полностью разъединяет (внешний) размер VBox от размера и числа детей, которое является тем, что я хотел.
При трожении лапой через Исходный код Flex, я не видел механизм, которым установка minHeight=0 заставила его работать как, я хотел, таким образом, я приветствую Yarin для обнаружения его.Спасибо!
установка minHeight = 0 является всем, что необходимо сделать.
Это говорит VBox игнорировать, это - детские измерения при калибровке себя, и вычислите его высоту вместо этого на основе родительских ограничений своего собственного/it. Установите все остальное, как Вы обычно были бы, прокручивая, и все остальное будет работать отлично.
Проведенные ДНИ на этом год назад - это не интуитивно, они, возможно, вероятно, назвали свойство лучше. Надежда это экономит u парням некоторое время...
Установите свойства своего Контейнера:
clipContent = true;
verticalScrollPolicy = "off"
Затем Ваш VBox должен автоматически отсечь, когда он имеет percentHeight = 100
;
Работы для меня в Flex 3.
Если необходимо стать действительно необычными, можно установить scrollRect на объектах:
scrollRect = new Rectangle(x, y, w, h);
в зависимости от того, что Вам нужен он, чтобы сделать.