Я работаю над проектом класса, и мне сложно установить выбранные элементы в списке. Я создал класс собак, в котором есть наблюдаемая коллекция пород. На моем главном экране у меня есть список, из которого вы можете выбрать собаку. Экран собаки обновления открывается, когда выбрана собака, и активируется событие кнопки обновления. На экране «Обновить собаку» есть окно со всеми породами собак. Мой вопрос: как установить выбранные элементы в списке, чтобы связать их с собаками?Как загрузить выбранные элементы в списке
Вот код для события 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>
Я попытался установить привязку для списка породы twoway, почему это не работает?
Привет Davut, спасибо за вашу помощь. Извините за любую путаницу, но мое домашнее задание - создать приложение WPF. Спасибо за вашу помощь. Я думаю, что я собираюсь создать два элемента управления: один список изначально заполнен породами собак и комбинированный ящик со всеми возможными списками породы. Затем пользователь может выбрать дополнительные породы из поля со списком. Затем будет кнопка добавления, чтобы взять выбранную породу из поля со списком и добавить ее к собаке и списку. Посмотрите, работает ли это, спасибо за ваш ответ! – 2013-04-01 15:00:10
Добро пожаловать. Я не заметил ни одного тега WPF. В WPF все проще, Этот парень говорит CollectionViewSource для WPF http://wpftutorial.net/DataViews.html –
Это отличный ресурс, еще раз спасибо! – 2013-04-01 19:41:24