Защо 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, който въвежда обвързване на UI елемент към елемент :)

По някаква причина (защо са направили това е извън мен), синтаксисът е малко по-различен, вместо да пише при използване на WPF:

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

бихте написали със Silverlight 3:

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

така че без частта „Path=“.

За съжаление хората от Silverlight в Microsoft имат склонност да правят малки промени в синтаксиса и други неща, вместо да се стремят към лесно повторно използване на код в WPF и Silverlight.

person eriksmith200    schedule 11.06.2009
comment
Всъщност можете да използвате частта „Path=“ и в Silverlight, ако желаете. - person mattmanser; 11.06.2009