我通過薩姆斯書會「自學WPF在24小時內」。在某一時刻,作者展示瞭如何將列表框的選定項值綁定到屬性。我明白了,這很簡單。但是,當我嘗試使用自己的ListBoxItems創建自己的ListBox控件時,似乎無法使其工作。WPF ListBox的ListBoxItem的綁定
的作品列表框使用系統集合作爲其ItemsSource屬性:
<ListBox x:Name="FontList"
DockPanel.Dock="Left"
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="160" />
從該列表框中選擇的值,然後在一個TextBlock使用方法如下:
<TextBlock Text="Test"
FontFamily="{Binding ElementName=FontList, Path=SelectedItem}"
TextWrapping="Wrap"
Margin="0 0 0 4" />
注意,路徑被設置爲SelectedItem。現在
,我想用一個包含3種不同尺寸的另一個列表框設置字號。下面是我做的:
<ListBox x:Name="Size" >
<ListBoxItem>10</ListBoxItem>
<ListBoxItem>15</ListBoxItem>
<ListBoxItem>20</ListBoxItem>
</ListBox>
然後我加入到文本框的大小屬性的綁定,如下所示:
<TextBlock Text="Test"
FontFamily="{Binding ElementName=FontList, Path=SelectedItem}"
Size="{Binding ElementName=Size, Path=SelectedItem}"
TextWrapping="Wrap"
Margin="0 0 0 4" />
當我運行該程序的大小不會改變。所以,我想補充我使用尺寸的文本屬性綁定 - 爲了看它的價值:
<TextBlock Text="{Binding ElementName=Size, Path=SelectedItem}""
FontFamily="{Binding ElementName=FontList, Path=SelectedItem}"
Size="{Binding ElementName=Size, Path=SelectedItem}"
TextWrapping="Wrap"
Margin="0 0 0 4" />
我看到我點擊列表框的尺寸,它是變化的,但我也看到,該是的SelectedItem顯示,因爲這(當我點擊進入15): System.Windows.Controls.ListBoxItem:15
我的問題: 1)什麼是所謂的SelectedItem路徑返回的實際值?是「System.Windows.Controls.ListBoxItem:15」還是「15」?如果它不是15,我怎麼能指定一個返回15而不是System.Windows.Controls.ListBoxItem的路徑:15?
2)爲什麼的FontFamily的SelectItem工作?我意識到FontList來自System的字體名稱集合,但是我不清楚爲什麼ListBox沒有將ListBoxItems的集合作爲文本返回。如果我的列表框的路徑引用正在返回ListBoxItem類型的SelectedItem對象,那麼我會認爲我可以使用SelectedItem.Value的路徑或類似的東西 - 但它不起作用,並且沒有Intellisense來幫助我。
我想這個例子中工作,因爲這將有助於明確一些誤解我。請不要重構解決方案以使其以某種其他方式工作,除非我完全不可能擁有一個Path參考,它只會給我選擇的Size ListBoxItem的數字部分。
太棒了!謝謝! – Jazimov 2012-03-17 23:47:12