от этого вопроса я выполнил развертку проблемы к полю списка, которое не изменяет размер, когда Объекты поля списка уменьшаются. Это изменяет размер соответственно, когда размер объектов растет, но это не уменьшается, когда размер объектов уменьшается.
Объекты могут расти/уменьшать, потому что объекты, содержащие текстовые поля, которые изменяют размер с входом.
Jeremiah предложил запустить новый вопрос с большего количества кода для показа, таким образом, здесь мы идем:
Наше злое поле списка является частью UserControl, который содержит StackPanel с Маркировать (HorizontalAlignment=Center), поле списка (HA=Left) и Кнопка (HA=Right). Объекты поля списка являются datalinked к ObservableCollection
Вы распознаете красивый BackgroundColors на ListBox и ListBoxItems. Я использовал их, чтобы смочь сказать, не уменьшаются ли Объекты или само Поле списка. Я узнал, что Объекты уменьшаются, но Поле списка не делает.
Хорошо, вот код моего UserControl:
Я понятия не имею, почему поле списка не уменьшается, когда размер уменьшения объектов, хотя я установил поле списка' размер на Автоматический и HorizontalAlignment к Левому
Заранее спасибо, Frank
Ну ... у меня нет всего вашего кода. Но я упростил то, что у вас было выше, и это работает.
Надеюсь, это поможет вам каким-то образом разобраться в вашей проблеме. Еще раз, это может быть родительский элемент этого элемента управления, вызывающий проблемы. Это также может быть один из ваших стилей, который вы применяете. Попробуйте удалить ВСЕ из-под вашего контроля, чего не должно быть, а затем медленно добавьте это обратно, чтобы найти виновника.
Я создал новое приложение Silverlight, и это буквально единственное в нем. Список увеличивается и уменьшается, как и ожидалось.
XAML:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="Test.MainPage">
<Grid x:Name="LayoutRoot">
<StackPanel VerticalAlignment="Top" HorizontalAlignment="Left">
<StackPanel.Background>
<SolidColorBrush Color="Black"/>
</StackPanel.Background>
<ListBox x:Name="ListBox" BorderBrush="{x:Null}" Margin="0" HorizontalContentAlignment="Left" FontSize="9.333" HorizontalAlignment="Left">
<ListBox.Foreground>
<SolidColorBrush Color="Silver"/>
</ListBox.Foreground>
<!-- DataTemplate to display the content -->
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanelOrientation="Horizontal" HorizontalAlignment="Left">
<TextBox FontSize="30" Text="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Background" Value="Yellow" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.Background>
<SolidColorBrush Color="Red" />
</ListBox.Background>
</ListBox>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Height="30">
<Button Content="Add" Click="Add_Click" Width="100"/>
<Button Content="Remove" Click="Remove_Click" Width="100"/>
</StackPanel>
</StackPanel>
</Grid>
</UserControl>
Скрытый код:
using System;
using System.Windows;
using System.Windows.Controls;
namespace Test
{
public partial class MainPage : UserControl
{
public MainPage()
{
// Required to initialize variables
InitializeComponent();
Count = 8;
}
private int Count;
private void Add_Click(object sender, System.Windows.RoutedEventArgs e)
{
Count = Count * 8;
ListBox.Items.Add("Hi Mom (" + Count.ToString() + ")");
}
private void Remove_Click(object sender, System.Windows.RoutedEventArgs e)
{
ListBox.Items.RemoveAt(ListBox.Items.Count-1);
}
}
}