我通过萨姆斯书会“自学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