Установите RenderTransform для любой сетки, элементы управления которой вы не хотите видеть, например, для контуров:
<Grid RenderTransform="1 0 0 1 10000 10000">
Вы можете использовать присоединенное свойство, чтобы сделать это удобным, позволяя вам установить сетку вавтоматически преобразовывать всякий раз, когда он скрыт, просто написав:
<Grid my:OutOfThisWorld.WhenHidden="True">
Вот код:
public class OutOfThisWorld : DependencyObject
{
// GoAway
public static bool GetGoAway(DependencyObject obj) { return (bool)obj.GetValue(GoAwayProperty); }
public static void SetGoAway(DependencyObject obj, bool value) { obj.SetValue(GoAwayProperty, value); }
public static readonly DependencyProperty GoAwayProperty = DependencyProperty.RegisterAttached("GoAway", typeof(bool), typeof(OutOfThisWorld), new UIPropertyMetadata
{
PropertyChangedCallback = (obj, e) =>
{
obj.SetValue(UIElement.RenderTransformProperty,
(bool)e.NewValue ? new TranslateTransform(100000,10000) : null);
}
});
// WhenHidden
public static bool GetWhenHidden(DependencyObject obj) { return (bool)obj.GetValue(WhenHiddenProperty); }
public static void SetWhenHidden(DependencyObject obj, bool value) { obj.SetValue(WhenHiddenProperty, value); }
public static readonly DependencyProperty WhenHiddenProperty = DependencyProperty.RegisterAttached("WhenHidden", typeof(bool), typeof(OutOfThisWorld), new PropertyMetadata
{
PropertyChangedCallback = (obj, e) =>
{
if((bool)e.NewValue)
BindingOperations.SetBinding(obj, GoAwayProperty,
new Binding("Visibility")
{
RelativeSource=RelativeSource.Self,
Converter = new IsHiddenConverter()
});
}
});
class IsHiddenConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (Visibility)value == Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); }
}
}
Как это работает: Настройка OutOfThisWorld.WhenHidden создает привязку к свойству OutOfThisWorld.GoAwayтаким образом, что когда видимость цели «Скрыта», свойство GoAway имеет значение true.Когда GoAway на самом деле сбывается, добавляется RenderTransform.
Сказав все это, вы рассматривали возможность использования Visibility = Collapsed вместо Visibility = Hidden?Это может быть проще.
Я также должен решительно поддержать замечание Уилла, что это ужасный замысел.Насколько ты "застрял с этим"?Если это политическая вещь, я извиняюсь за вас.Но с технической точки зрения преобразование этого в реальный элемент управления вкладками с шаблоном должно быть очень простым.