繁体   English   中英

如何通过代码绑定appbar的可见性?

[英]How to bind appbar's visibility by code?

如何在代码中设置MultiApplicationBarBehavior.IsVisible绑定?

问题是:如果通过xaml绑定它,即使绑定的值为false,它也会闪烁。

EDIT1:那么,我要绑定到什么?

<mainPivot:SplashScreenControl 
        Opacity="1"
        Name="SplashScreen"
        Visibility="{Binding Opacity, ElementName=SplashScreen, Converter={StaticResource DoubleToVisibilityConverter}}"
        />

 <cimbalino:MultiApplicationBarBehavior 
            SelectedIndex="{Binding PivotIndex}" 
            IsVisible="{Binding Opacity, ElementName=SplashScreen, Converter={StaticResource DoubleToBooleanInversedConverter}}"
            >

闪屏:可见性已绑定到不透明度,因为不透明度= 0的可见对象仍在处理输入。

Appbar刚刚绑定到了Splashscreen的不透明度。 根本没有任何代码隐藏(只需注释掉所有内容)。 但是,在页面加载期间,appbar闪烁。 这就是为什么我要在默认情况下将其设置为false,然后再通过代码绑定。

appbar不闪烁的唯一情况是将其绑定到自定义属性,该属性在初始化期间设置为false

<cimbalino:MultiApplicationBarBehavior 
            SelectedIndex="{Binding PivotIndex}" 
            IsVisible="{Binding IsSplashScreenVisible, Converter={StaticResource BooleanInversedConverter}}"
            >

转换器:

public class DoubleToBooleanInversedConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null)
            return true;

        return !((value as double?) > 0);
    }
}

我认为用代码进行绑定不会有帮助,您是否确定要在执行页面的构造方法时将要绑定的值设置为false(并且在构造方法中设置了DataContext)?
如果要绑定到某个对象属性(在构造器中为null),则可以在绑定上添加FallbackValue = false。

如果您找不到其他解决方案,请按以下步骤在代码中创建相同的绑定:

Binding binding = new Binding("Opacity");
binding.ElementName = "SplashScreen";
binding.Converter =  new DoubleToBooleanInversedConverter();
multiAppBarBehavior.SetBinding(MultiApplicationBarBehavior.IsVisibleProperty, binding);

(其中multiAppBarBehavior将是MultiApplicationBarBehavior控件名称)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM