Детский комбинированный ящик Silverlight - PullRequest
1 голос
/ 01 июля 2011

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

         <riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:Country, CreateList=true}" Height="0" Name="CountryDomainDataSource" QueryName="GetCountriesQuery" Width="0">
        <riaControls:DomainDataSource.DomainContext>
            <my:CountriesContext />
        </riaControls:DomainDataSource.DomainContext>
    </riaControls:DomainDataSource>


    <riaControls:DomainDataSource AutoLoad="False" d:DesignData="{d:DesignInstance my:Address, CreateList=true}" Height="0" Name="AddressDomainDataSource" QueryName="GetAddressQuery" Width="0" LoadDelay="10000">
        <riaControls:DomainDataSource.DomainContext>
            <my:AddressContext />
        </riaControls:DomainDataSource.DomainContext>
        <riaControls:DomainDataSource.QueryParameters>
            <riaControls:Parameter ParameterName="intAddressID" />
        </riaControls:DomainDataSource.QueryParameters>
    </riaControls:DomainDataSource>



    <Grid DataContext="{Binding ElementName=AddressDomainDataSource, Path=Data}" HorizontalAlignment="Left" Margin="63,27,0,0" Name="Grid1" VerticalAlignment="Top">

Это записывает правильно, когда я перехожу на другой элемент в списке, но при запуске он всегда заменяется на первый элемент всписок CountryDomainDataSource.Я установил точку останова в своем коде web.g.vb, и кажется, что intCountryID установлен правильно при запуске, но сразу после его возврата он перезаписывается первым значением в списке.Я не написал никакого кода, чтобы установить это значение на первое значение в моем списке CountryDomainDataSource?Похоже, что после того, как событие CountryDomainDataSource_LoadedData завершено, он устанавливает значение countryid.Есть ли какой-то способ заставить мой CountryDomainDatasource загружаться сначала, а затем - мой AddressDomainDatasource, или я делаю что-то глупое или неправильное здесь, поскольку некоторое время я ломал голову над этим?

Любая помощь будет высоко ценится.*

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 июля 2011

Когда DDS успешно загружает данные, он выберет первый элемент в списке.По этой причине (помимо прочего) я рекомендую не использовать его для заполнения ComboBox.Вот пара сообщений, составленных Джеффом и мной, объясняющими причины и лучшие альтернативы.

0 голосов
/ 01 июля 2011

Установите AutoLoad="False" в AddressDomainDatasource, чтобы остановить его автоматическую загрузку и вызвать Load() AddressDomainDatasource из события CountryDomainDataSource_LoadedData.

Или вы можете просто установить LoadDelay для AddressDomainDatasource (может быть проще).

...