Почему Path=SelectedItem.Content работает для ComboBox в WPF, но не для Silverlight?

Следующий код отлично работает в WPF.

В Silverlight это выдает ошибку **Недопустимое значение атрибута {Binding ElementName=WhichNumber, Path=SelectedItem.Content} для свойства Text. **

Как заставить это работать в Silverlight?

    <ComboBox x:Name="WhichNumber" Width="100" HorizontalAlignment="Left" Margin="10" SelectedIndex="0">
        <ComboBoxItem Content="One"/>
        <ComboBoxItem Content="Two"/>
        <ComboBoxItem Content="Three"/>
    </ComboBox>

    <TextBlock Text="{Binding ElementName=WhichNumber, Path=SelectedItem.Content}"/>

person Edward Tanguay    schedule 11.06.2009    source источник
comment
Вы пытаетесь сделать это в Silverlight 2 или Silverlight 3 (с привязкой между элементами)?   -  person Michael S. Scherotter    schedule 11.06.2009
comment
в 2, о, это хорошо знать!   -  person Edward Tanguay    schedule 11.06.2009


Ответы (2)


Silverlight не поддерживает относительную привязку (привязку атрибута одного элемента к значению атрибута другого элемента), в то время как WPF полностью поддерживает такую ​​привязку.

person Justin Niessner    schedule 11.06.2009

Или вы можете перейти на Silverlight 3, который вводит привязку элемента пользовательского интерфейса к элементу :)

По какой-то причине (зачем они это сделали, мне не под силу) синтаксис немного другой, вместо записи при использовании WPF:

 <TextBlock Text="{Binding ElementName=WhichNumber, Path=SelectedItem.Content}"/>

вы бы написали с Silverlight 3:

 <TextBlock Text="{Binding ElementName=WhichNumber, SelectedItem.Content}"/>

так что без части «Путь =».

К сожалению, разработчики Silverlight в Microsoft склонны вносить небольшие изменения в синтаксис и другие вещи вместо того, чтобы стремиться к простому повторному использованию кода в WPF и Silverlight.

person eriksmith200    schedule 11.06.2009
comment
Вы также можете использовать часть «Путь =» в Silverlight, если хотите. - person mattmanser; 11.06.2009