Ich weiß nicht, wie man das macht und ich glaube, es wurde nicht so entworfen, um so zu arbeiten.
Sie können Sie Converter ändernIMultiValueConverter und verwenden Sie die Fenster Eigenschaft als zweiten Parameter IsLoaded zu implementieren, das zu tun.
erstellen DependencyProperty, WindowIsLoaded zum Beispiel dann, auf Ereignis den Wert wahr ändern geladen.
Auf Converter, wenn WindowIsLoaded ist gleich zu falsch Rückkehr immer 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>
Nun ist die Designer recive werden falsch von WindowIsLoaded und alle Ihre Steuerelemente sind unter Designer Mode sichtbar.