Я бы подошел к этому, привязав свойство Visibility ваших элементов управления к ширине (или высоте, в зависимости от вашей компоновки) окна через конвертер.Рассмотрим что-то вроде этого:
public class HideIfSmallConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var c = value as IComparable;
if (c == null) return Visibilty.Visible;
return c.CompareTo(parameter) < 0 ? Visibility.Collapsed : Visibility.Visible;
}
}
Теперь у нас есть компаратор, который позволит нам свернуть элемент, если значение меньше заданного параметра.Мы можем использовать это следующим образом:
<ListBox Visibility="{Binding ActualWidth,RelativeSource={RelativeSource FindAncestor,AncestorType=Window},Converter={StaticResource hideIfSmall},ConverterParameter=400}" />
Таким образом, идея состоит в том, что ListBox разрушается, если ширина окна падает ниже 400.
Ничего из этого не проверено, но, надеюсь, это даст вамнекоторые идеи.