I don't know how to do this and I believe it was not designed to work that way.
You can change you Converter to implement IMultiValueConverter and use the Window property IsLoaded as a second parameter to do that.
Create a DependencyProperty, WindowIsLoaded for example, then, on Loaded event change the value to true.
On Converter, when WindowIsLoaded is equals to false always return Visibility.Visible.
ON CODE:
public bool WindowIsLoaded
{
get { return (bool)GetValue(WindowIsLoadedProperty); }
set { SetValue(WindowIsLoadedProperty, value); }
}
public static readonly DependencyProperty WindowIsLoadedProperty =
DependencyProperty.Register("WindowIsLoaded", typeof(bool), typeof(Window),
new PropertyMetadata(false));
private void Window_Loaded(object sender, RoutedEventArgs e)
{
WindowIsLoaded = true;
}
public class BooleanToVisibilityConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var isActivated = (bool)values[0];
var isLoaded = (bool)values[1];
if (!isLoaded)
return Visibility.Visible;
return isActivated ? Visibility.Visible : Visibility.Collapsed
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new Exception("Only oneway binding!");
}
}
XAML:
xmlns:local="clr-namespace:YourProjectNamespace.YourWindow"
<Canvas x:Name="groupControls">
<Canvas.Visibility>
<MultiBinding Converter="{StaticResource BooleanToVisibilityConverter}">
<Binding ElementName="MyControl" Path="IsActivated"/>
<Binding RelativeSource="{RelativeSource AncestorType={x:Type local:MainWindow},
Mode=FindAncestor}"
Path="WindowIsLoaded" />
</MultiBinding>
</Canvas.Visibility>
</Canvas>
Now the Designer will recive false from WindowIsLoaded and all your controls will be visible on Designer Mode.