0

クラスのプロジェクトに取り組んでいますが、選択したアイテムをリストボックスに設定するのが困難です。観察可能な品種のコレクションを含む犬のクラスを作成しました。私のメイン画面には、犬を選択できるリスト ボックスがあります。犬が選択され、犬の更新ボタン イベントがトリガーされると、犬の更新画面が開きます。犬の更新画面には、すべての犬種のリスト ボックスがあります。私の質問は、リスト ボックスの選択した項目を犬の品種にリンクするように設定するにはどうすればよいですか?

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();
    }

UpdateDogWindow の XAML コードは次のとおりです。

<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>

品種リストのバインドを双方向に設定しようとしましたが、なぜ機能しないのですか?

4

1 に答える 1

0

宿題のようです。答えは、フィルタリングに CollectionViewSource を使用することです。フィルタリング、ソートなどに CollectionViewSource を使用できます。

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

于 2013-04-01T09:01:58.007 に答える