2013-10-22 77 views
0

如何在代碼中設置MultiApplicationBarBehavior.IsVisible綁定?如何通過代碼綁定appbar的可見性?

問題:如果要通過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); 
    } 
} 

回答

0

我不認爲在代碼中進行綁定會有幫助,你確定當頁面的構造器被執行(並且在構造器中設置了DataContext)時,你綁定的值被設置爲false?
如果您綁定到某個在構造函數中爲null的對象proeperty,則可以在綁定中添加FallbackValue = false。

如果你沒有發現任何其他的解決辦法這裏是如何創建的代碼相同的綁定:

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

(其中multiAppBarBehavior將是MultiApplicationBarBehavior控制名稱)

+0

嗨,很高興看到亞。更新的問題。 –

+0

是否在xaml中設置了頁面的DataContext?如果你是在設置IsSplashScreenVisible的情況下? –

+0

添加了在代碼中創建綁定的代碼,即使我認爲如果在生成頁面時IsSplashScreenVisible正確設置爲false,您也需要這樣做 –