Хобрук: Ваш путь к мастерству в программировании

Как я могу загрузить выбранные элементы в список

Я работаю над классным проектом, и у меня возникают трудности с настройкой выбранных элементов в списке. Я создал класс собак, содержащий наблюдаемую коллекцию пород. На главном экране у меня есть список, из которого вы можете выбрать собаку. Экран обновления собаки открывается, когда собака выбрана и запускается событие кнопки обновления собаки. На экране обновления собак есть список со всеми породами собак. Мой вопрос: как мне установить выбранные элементы списка для связи с породами собак?

Вот код события btnUpdateDog_Click:

    private void btnUpdateDog_Click(object sender, RoutedEventArgs e)
    {
        if (this.lstDogListBox.SelectedItem != null)
        {
            Dog selectedDog = (Dog)this.lstDogListBox.SelectedItem;
            var dogId = selectedDog.DogId;
            var _selectedDog = _dogRepository.Fetch(dogId).SingleOrDefault();

            UpdateDogWindow updateDogWindow = new UpdateDogWindow(dogId);

            updateDogWindow.Owner = windowClientApplication;

            updateDogWindow.DataContext = _selectedDog;

            updateDogWindow.ShowDialog();

            if (updateDogWindow.ShowDialog() == true)
            {
                LoadSearchResults();
            }
        }
    }

Вот конструктор для UpdateDogWindow

    public UpdateDogWindow(int criteria)
    {
        _dogRepository = new DogRespository();

        var _dogQuery = _dogRepository.Fetch(criteria);

        this.DataContext = _dogQuery;

        InitializeComponent();
    }

Вот код XAML для UpdateDogWindow:

<Window x:Class="ClientApplication.UpdateDogWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:Objects="clr-namespace:SGVHS_VCDB.Database.Objects;assembly=SGVHS_VCDB.Database.Objects"
        Title="Update Dog"
        Height="300" 
        Width="800" 
        Background="#FFD6DBDD" 
        WindowStartupLocation="CenterOwner" 
        WindowStyle="ToolWindow" 
        Loaded="Window_Loaded">
    <Window.DataContext>
        <Objects:Dog />
    </Window.DataContext>
    <Canvas>
        <Label 
            Canvas.Left="20" 
            Canvas.Top="20" 
            Content="_Dog Name:" 
            Height="36" 
            FontSize="18" 
            Name="lblDogName" />
        <TextBox 
            Canvas.Left="130" 
            Canvas.Top="20" 
            Height="38" 
            Width="250" 
            FontSize="18" 
            Text="{Binding Path=DogName, UpdateSourceTrigger=PropertyChanged}" 
            Name="txtUpdateDogName" />
        <Label 
            Canvas.Left="20" 
            Canvas.Top="80" 
            Content="_Intake Date:" 
            Height="36" 
            FontSize="18" 
            Name="lblIntakeDate" />
        <DatePicker 
            Canvas.Left="170" 
            Canvas.Top="81" 
            Height="38" 
            Width="175" 
            FontSize="18" 
            SelectedDate="{Binding IntakeDate}"
            Name="dtoUpdateIntakeDate"/>
        <Label
            Canvas.Left="20" 
            Canvas.Top="140"
            Height="36"
            Content="_Unavailable Date:"
            FontSize="18"
            Name="lblUnavailableDate"/>
        <DatePicker 
            Canvas.Left="170" 
            Canvas.Top="141" 
            Height="38" 
            Width="175" 
            FontSize="18" 
            SelectedDate="{Binding UnavailableDate}" 
            Name="dtoUnavailableDate"/>
        <GroupBox 
            Canvas.Left="400" 
            Canvas.Top="22" 
            Header="Breeds" 
            Height="169" 
            Width="363" 
            FontSize="18" 
            BorderBrush="Black"
            Name="grpBreeds">
            <ListBox 
                DisplayMemberPath="BreedName"
                SelectionMode="Multiple"
                SelectedValuePath="BreedName"
                SelectedItem="{Binding Breed, Mode=TwoWay}"
                Name="lstUpdateDogBreedList" />
        </GroupBox>
        <CheckBox 
            Canvas.Left="20" 
            Canvas.Top="200" 
            Content="Adopted" 
            Height="32" 
            FontSize="18"
            IsChecked="{Binding Adopted}"
            Name="chkAdopted"/>
        <Button 
            Canvas.Left="637" 
            Canvas.Top="205" 
            Content="Done" 
            Height="30" 
            Width="120" 
            FontSize="18" 
            Name="btnUpdateDogDone" />        
    </Canvas>
</Window>

Я пытался установить двустороннюю привязку списка пород, почему это не работает?

01.04.2013

Ответы:


1

Это похоже на домашнее задание. Ответ: используйте CollectionViewSource для фильтрации. Вы можете использовать CollectionViewSource для фильтрации, сортировки и т. д.

http://weblogs.asp.net/psheriff/archive/2010/08/03/filtering-collectionview-data-in-silverlight-4.aspx

01.04.2013
  • Привет Давут, спасибо за вашу помощь. Извините за путаницу, но мое домашнее задание — создать приложение WPF. Спасибо за вашу помощь. Я думаю, что я собираюсь создать два элемента управления, одно поле со списком, изначально заполненное породами собак, и поле со списком со всеми возможными списками пород. Затем пользователь может выбрать дополнительные породы из поля со списком. Затем появится кнопка добавления, чтобы взять выбранную породу из поля со списком и добавить ее к собаке и списку. Посмотрим, сработает ли это, спасибо за ваш ответ! 01.04.2013
  • Пожалуйста. Я не заметил никакого тега WPF. В WPF все проще. Этот парень говорит CollectionViewSource для WPF wpftutorial.net/DataViews.html 01.04.2013
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..