Ящик Silverlight не переплетает - PullRequest
0 голосов
/ 04 марта 2011

У меня есть довольно простая форма для добавления элементов в сетку данных. Вот проблемный дочерний элемент, выпадающий список, который работает, когда кто-то первый раз нажимает кнопку, чтобы добавить элемент, но последующие щелчки не возвращают никакого значения для выбранного значения:

<ComboBox SelectedValuePath="Content" SelectedValue="{Binding Mode=TwoWay, NotifyOnValidationError=True, Path=NewResource.ResourceType, ValidatesOnExceptions=True}" Grid.Row="2" Grid.Column="1" Margin="0,10,0,0">
    <ComboBoxItem Content="AV"  />
    <ComboBoxItem Content="Room Setup" /></ComboBox>

А вот код в модели представления, который добавляет ресурс:

if (NewResource.Name != string.Empty)
{
    ProposalResource _pr = new ProposalResource()
    {
        CreatedBy = App.UserID,
        CreatedOn = DateTime.Now,
        ModifiedBy = App.UserID,
        ModifiedOn = DateTime.Now,
        Name = NewResource.Name,
        ProposalID = CurrentProposal.ProposalID,
        Quantity = NewResource.Quantity,
        ResourceType = NewResource.ResourceType
    };

    CurrentProposal.ProposalResources.Add(_pr);
    ctx.SubmitChanges();

    NewResource.Name = "";
    NewResource.Quantity = null;
    NewResource.ResourceType = null;
    RaisePropertyChange("NewResource");
}

Моя проблема в том, что это работает для первой вставки. Тип ресурса взят из выпадающего списка, и все хорошо. Но последующий щелчок не возвращает выбранное значение. Есть ли причина, по которой последующие запросы не будут использовать двустороннюю привязку?

1 Ответ

1 голос
/ 05 марта 2011

Это известная ошибка со SL, встроенная в ComboBox, что при изменении базового ItemsSource привязка SelectedValue нарушается.(Он также ломается, если вы установите для SelectedValue значение NULL после того, как оно было ненулевым значением.)

Для этого потребуется ручной обходной путь, мой предпочтительный метод - написать поведение интерактивности (см.пример здесь как написать свой собственный) со свойствами ItemsSource и SelectedValue, я связываю (или изменяю) эти свойства, в то время как я изменяю свойства ComboBox Items и SelectedItem для кода и изменяю выбранное значение поведения вСобытие SelectionChanged в ComboBox, а не его привязка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...