Я изучаю книгу Самса «Обучайся WPF за 24 часа».В какой-то момент авторы показывают, как можно привязать значение выбранного элемента ListBox к свойству.Я понимаю, это довольно просто.Но когда я пытаюсь создать свой собственный элемент управления ListBox со своими собственными ListBoxItems, я не могу заставить его работать.
Работающий ListBox использует системную коллекцию в качестве свойства ItemsSource:
<ListBox x:Name="FontList"
DockPanel.Dock="Left"
ItemsSource="{x:Static Fonts.SystemFontFamilies}"
Width="160" />
Значение, выбранное из этого ListBox, затем используется в TextBlock следующим образом:
<TextBlock Text="Test"
FontFamily="{Binding ElementName=FontList, Path=SelectedItem}"
TextWrapping="Wrap"
Margin="0 0 0 4" />
Обратите внимание, что путь установлен в SelectedItem.
Теперь я хотел установить FontSize, используя другой ListBox, который содержит 3 разных размера.Вот что я сделал:
<ListBox x:Name="Size" >
<ListBoxItem>10</ListBoxItem>
<ListBoxItem>15</ListBoxItem>
<ListBoxItem>20</ListBoxItem>
</ListBox>
А затем я добавил привязку к атрибуту Size TextBox следующим образом:
<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" />
Я вижу, что оно меняется, когда я нажимаю на Размер ListBox, но я такжевидите, что 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 в виде текста.Если ссылка Path моего ListBox возвращает объект SelectedItem типа ListBoxItem, то я думаю, что я мог бы использовать Path of SelectedItem.Value или что-то в этом роде - но это не работает, и нет Intellisense, чтобы помочь мне.
Я хочу, чтобы ЭТОТ пример работал, потому что он поможет устранить некоторые недоразумения, которые у меня есть.Пожалуйста, не проводите рефакторинг решения, чтобы заставить его работать как-то иначе, если только для меня совершенно невозможно иметь ссылку на путь, которая даст мне только числовую часть моего выбранного размера ListBoxItem.