두 개의 서로 다른 바인딩을 사용하여 사용자 지정 ListView에서 모든 정보를 얻는 방법은 무엇입니까?

데이브

저는 현재 "토너먼트 생성기"를 작업 중이며 한 단계에서 트레이너를 팀에 연결해야합니다. 따라서 통합 콤보 상자와 함께 WPF ListView사용했습니다 . 선택 모드는 "다중"입니다 . 그림은 다음과 같습니다.

평판이 없기 때문에 사진이 없습니다.

다음과 같이 보입니다.

두 개의 열이 있습니다. 첫 번째 열에는 다른 트레이너 이름이 있습니다. 두 번째 열에는 각 줄에 서로 다른 팀이있는 콤보 상자가 있습니다. 각 트레이너에 대해 콤보 박스에서 팀을 선택할 수 있습니다.

다음은 코드입니다.

  <ListView x:Name="TrainerListView" ItemsSource="{Binding Trainer}" HorizontalAlignment="Left" VerticalAlignment="Top" SelectionMode="Multiple">
                        <ListView.View>
                            <GridView>
                                <GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Header="Trainer" Width="150"/>

                                <GridViewColumn Header="Team" Width="150">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=DataContext.Teams}" Width="120" DisplayMemberPath="Name"/>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView>
                        </ListView.View>
                    </ListView>

코드에서 볼 수 있듯이 ListView에는 Trainer 속성이 ItemsSource로 있고 ComboBoxes에는 Teams 속성이 있습니다.

버튼을 클릭 한 후 선택한 모든 값을 가져오고 싶습니다. 여기 : "David with FC Liverpool", "Bernd with Borussia Dortmund"및 "Tim with Bayern Munic". 다음을 시도했습니다.

private void StartTournamentButton_Click(object sender, RoutedEventArgs e)
{
    var selectedItems = TrainerListView.SelectedItems;
}

그러나 selectedItems 변수는 선택된 트레이너 개체 "David, Bernd 및 Tim"만 보유합니다.

여전히 Trainer와 Team의 연결은 말할 것도없고 ListView에서 "팀 값"을 검색하는 방법을 찾을 수 없었습니다. 선택한 행의 값을 어떻게 얻습니까? 관련 값으로 가장 좋습니다.

친애하는,

데이비드

Rohit Vats

에서 Trainer클래스 다른 속성 발언권을 가질 필요가 AssignedTeam떨어져에서 Name.

public string AssignedTeam { get; set; }

그리고 SelectedItem해당 속성으로 콤보 상자를 바인딩 합니다.

<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor,
                          AncestorType={x:Type Window}},Path=DataContext.Teams}"
          SelectedItem="{Binding AssignedTeam}"
          Width="120"/>

이제 SelectedItems will give you list of objects of Trainer class어디에서 팀 할당 속성에 액세스 할 수 있습니다.

var selectedItems = TrainerListView.SelectedItems;
string assignedTeam = ((Trainer)selectedItems[0]).AssignedTeam;

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관