Несмотря на поиски подобной ситуации я не мог найти что-либо сравнимое с автоматически изменение размера содержимого всплывающего в зависимости от его содержания.
1002 * В конце концов, я пропустил что-то очевидное, но после того, как создан мой Всплывающее stubornly отказывается пересчитывать его размер и расположение содержимого при изменении содержимого.
Если быть более точным: мое всплывающее окно содержит ListView, содержимое которого изменяется динамически.
Теперь, когда всплывающее окно создается впервые, его ширина будет соответствовать желаемому размеру. ListView, так что все элементы представления списка (внутри GridView).
![Initial Popup created properly](https://i.stack.imgur.com/HnGmu.png)
Когда теперь элементы в ListView обновляются, ширина самой длинной изменения элемента Ожидаемое поведение заключается в том, что представление списка и всплывающее окно изменят размер (ширину) в соответствии с новыми элементами списка.
К сожалению, всплывающее окно и его содержимое просто отказываются меняться, и в результате содержимое обрезается.
![Height does change, but width just refuses to update](https://i.stack.imgur.com/i540k.png)
Я уже пытался аннулировать расположение и измерение всплывающих окон и вызвал UpdateLayout для Popup и / или ListView, но пока безуспешно ... Элемент GridView Мне не удалось получить к нему доступ или управлять им ...
Есть ли способ принудительно пересчитать общий макет всплывающего окна или ListView?
<Popup x:Name = "hintPopup"
Placement = "Bottom"
PlacementTarget = "{Binding ElementName=textBox}"
MinWidth = "{Binding ElementName=textBox, Path=ActualWidth}"
IsOpen = "{Binding ShowPopup, RelativeSource={RelativeSource AncestorType=ccont:vokDataGridEdit}}"
Margin = "0,20,0,0">
<!-- Reference a converter to convert Bool Values to Visibility -->
<Popup.Resources>
<conv:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
</Popup.Resources>
<!-- Move popup with anchor -->
<b:Interaction.Behaviors>
<behav:PopupAutoRepositionBehavior />
</b:Interaction.Behaviors>
<Border BorderBrush = "Gray"
BorderThickness = "1"
Background = "LightGray"
Padding = "1">
<StackPanel Orientation="Vertical">
<!-- Title Starts With -->
<TextBlock Text = "{x:Static res:Strings.vokDataGridEdit_Popup_TitleStartsWith}"
Visibility = "{Binding ShowHintsStartsWith, RelativeSource={RelativeSource AncestorType=ccont:vokDataGridEdit}, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=collapsed}"
FontWeight = "Bold"
Foreground = "Black"
Margin = "0, 5, 0, 2"/>
<!-- Hints -->
<ListView ItemsSource = "{Binding ItemHintsStartsWith, Mode=TwoWay, RelativeSource={RelativeSource AncestorType=ccont:vokDataGridEdit}}"
Visibility = "{Binding ShowHintsStartsWith, RelativeSource={RelativeSource AncestorType=ccont:vokDataGridEdit}, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=collapsed}"
Margin = "5, 1, 1, 1">
<!-- Prevent selection -->
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Focusable" Value="false"/>
</Style>
</ListView.ItemContainerStyle>
<!-- Hide Headers -->
<ListView.Resources>
<Style TargetType="GridViewColumnHeader">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn DisplayMemberBinding = "{Binding Path=valueCurrent}"
Header = "Current"
Width = "auto" />
<GridViewColumn DisplayMemberBinding = "{Binding Path=valueTranslated}"
Header = "Translated"
Width = "auto" />
</GridView>
</ListView.View>
</ListView>
<!-- Title Similar -->
<TextBlock Text = "{x:Static res:Strings.vokDataGridEdit_Popup_Similar}"
Visibility = "{Binding ShowHintsSimilar, RelativeSource={RelativeSource AncestorType=ccont:vokDataGridEdit}, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=collapsed}"
FontWeight = "Bold"
Foreground = "Black"
Margin = "0, 5, 0, 2"/>
<!-- Hints -->
<ListView ItemsSource = "{Binding ItemHintsSimilar, Mode=TwoWay, RelativeSource={RelativeSource AncestorType=ccont:vokDataGridEdit}}"
Visibility = "{Binding ShowHintsSimilar, RelativeSource={RelativeSource AncestorType=ccont:vokDataGridEdit}, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=collapsed}"
Margin = "5, 1, 1, 1">
<!-- Prevent selection -->
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Focusable" Value="false"/>
</Style>
</ListView.ItemContainerStyle>
<!-- Hide Headers -->
<ListView.Resources>
<Style TargetType="GridViewColumnHeader">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn DisplayMemberBinding = "{Binding Path=valueCurrent}"
Header = "Current"
Width = "auto" />
<GridViewColumn DisplayMemberBinding = "{Binding Path=valueTranslated}"
Header = "Translated"
Width = "auto" />
</GridView>
</ListView.View>
</ListView>
</StackPanel>
</Border>
</Popup>