SelectedItem для выпадающего списка всегда нулевой - PullRequest
0 голосов
/ 21 декабря 2011

Я работаю над Silverlight 4, и у меня возникают трудности с тем, чтобы мой комбобокс работал правильно. При изменении выбранных элементов значение selectedItem остается нулевым. Я определил комбинированный список следующим образом:

<ComboBox
x:Name="ProductGroupCombobox"
Grid.Row="2"
Margin="10,15"
Height="30" Width="200"
Background="{x:Null}"
BorderBrush="{x:Null}"
ItemsSource="{Binding}"
SelectionChanged="ProductGroupCombobox_SelectionChanged"
SelectedItem="{Binding Path=ProductType, Mode=TwoWay}">
                    <ComboBox.ItemTemplate>
                       <DataTemplate>
                            <TextBlock Text="{Binding Path=Name}" />
                        </DataTemplate>
                    <ComboBox.ItemTemplate>

</ComboBox>

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 21 декабря 2011

Ваше свойство SelectedItem должно быть привязано к экземпляру в вашей коллекции, в то время как кажется, что у вас DataContext установлено в то, что я предполагаю, является коллекцией.Обратите внимание, как я изменил привязку для привязки коллекции и отдельное свойство для привязки экземпляра в коллекции.

public class MyData : INotifyPropertyChanged
{
    List<String> ProductTypes {get; set;}

    String _selectedProductType = String.Empty;
    String SelectedProductType 
    {
        get
        {
            return _selectedProductType;
        }
        set
        {
            _selectedProductType = value;
            PropertyChangedEventHandler handler = PropertyChanged;
            if(handler != null)
                handler(this, new PropertyChangedEventArgs("SelectedProductType");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

...

this.DataContext = new MyData();

...

<ComboBox
     x:Name="ProductGroupCombobox"
     Grid.Row="2"
     Margin="10,15"
     Height="30" Width="200"
     Background="{x:Null}"
     BorderBrush="{x:Null}"
     ItemsSource="{Binding ProductTypes}"
     SelectionChanged="ProductGroupCombobox_SelectionChanged"
     SelectedItem="{Binding Path=SelectedProductType, Mode=TwoWay}">
     <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=Name}" />
        </DataTemplate>
     </ComboBox.ItemTemplate>
</ComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...