2011-09-08 49 views
3

我想在Silverlight 4如何綁定手風琴頭模板

創建一個簡單的頭部模板手風琴對象我添加圖像和一個TextBlock到的頭部模板項目值AccordionItem。我想根據頁面上輸入的值隱藏或顯示圖像。

因爲我想直接將這些值綁定到實際的手風琴項目,我創建了一個新類型「AccordionItemWithIcons」,該類型僅從AccordionItem繼承,但添加了一些依賴屬性來處理此問題。爲了簡潔起見,我只展示了其中的幾個屬性。 :)

所以,這裏是我的手風琴和我的「AccordionItemWithIcons」控制。請注意,'CheckIsVisible'屬性的類型爲'可見性'

<Grid x:Name="LayoutRoot"> 
    <Controls:Accordion Height="100"> 
     <my:AccordionItemWithIcons 
      x:Name="FirstItem" 
      Content="Content Text" 
      Header="Header Text" 
      CheckIsVisible="Collapsed" 
      EventSummary="Summary Text" 
      HeaderTemplate="{StaticResource AccordionItemHeaderTemplate1}"/> 
    </Controls:Accordion> 
</Grid> 

這裏是標題模板。

<DataTemplate x:Key="AccordionWithIcons_HeaderTemplate1" > 
    <Grid >    
     <StackPanel Orientation="Horizontal" VerticalAlignment="Top"> 
      <TextBlock Text="{Binding EventSummary}" /> 
      <Image Visibility="{Binding CheckIsVisible}" Source="/Labyrinth;component/cross.png"/> 
     </StackPanel> 
    </Grid> 
</DataTemplate> 

任何人都可以解釋我是如何可以綁定TextBlock的文本和圖像的可見性,以在基礎AccordionItemWithIcons對象設置值是多少?我花了幾個小時來討論不同的DataContext和源代碼,似乎無法讓它工作!

我不知道是否有助於解釋什麼,我試圖實現,但最終在後面的代碼我希望能這樣說(如下圖所示),以顯示或隱藏在標題上的圖標模板。

FirstItem.CheckIsVisible = Visibility.Visible 

回答

0

爲此,存在VisibilityToBooleanConverter

<BooleanToVisibilityConverter x:Key=」boolVisConverter」/> 

[...]

Visibility="{Binding ElementName=anyCheckbox, 
    Path=IsChecked, 
    Converter={StaticResource boolVisConverter}}" 
+0

好吧,你不必爲這個..一個布爾值,如果兩個屬性您可以使用綁定:{Binding FirstItem,Path = CheckIsVisible} –

+0

感謝您抽出寶貴的時間,但我不認爲這就是我所追求的。這是一個模板!在你的例子中,你正在指定要綁定的對象的名稱。如果我這樣做,那麼我將需要爲手風琴控制中的每個項目設置一個單獨的模板。 另外,我不知道我需要一個類型轉換可言,因爲作爲陳述的類型已經是「能見度」。 –