2014-04-22 6 views
0

행을 두 번 클릭하면 바인딩 값을 변경하려고합니다. 나는 google에 몇몇 페이지를 통해서 보았다 그러나 나가 필요로하는 것을하는 아무것도 찾아 내지 않았다.WPF ListView SelectedItem 바인딩 값 변경

다음은 내 코드 및 작동 방법의 예입니다. 이 같은 listview에서 행 바인딩 값을 편집 할 수 있습니까?

WPF :

   <ListView x:Name="LstLinks" HorizontalAlignment="Left" Height="108" Margin="10,53,0,0" VerticalAlignment="Top" Width="641" SelectionMode="Single"> 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Header="G" Width="20" DisplayMemberBinding="{Binding LG}" /> 
          <GridViewColumn Header="P" Width="20" DisplayMemberBinding="{Binding LP}" /> 
          <GridViewColumn Header="Link Type" Width="100" DisplayMemberBinding="{Binding LType}"/> 
          <GridViewColumn Header="Code" Width="60" DisplayMemberBinding="{Binding LCode}"/> 
          <GridViewColumn Header="Company" Width="150" DisplayMemberBinding="{Binding LComp}"/> 
          <GridViewColumn Header="Name" Width="150" DisplayMemberBinding="{Binding LName}"/> 
          <GridViewColumn Header="Address" Width="137" DisplayMemberBinding="{Binding LAddress}"/> 
         </GridView> 
        </ListView.View> 
       </ListView> 

C 번호 :

void LstLinks_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     var selItem = LstLinks.SelectedItem; 

     //selItem.LP = "✓"; <-- Does not work. Cannot have ".LP" 

     LstLinks.Items.Refresh(); 
    } 
+1

LP 속성을 설정할 때 속성 변경 알림을 올리려고합니까? LP 속성 코드를 게시하십시오. – sthotakura

+0

@LiveKarma 당신은'SelectedItem'을 여러분의 뷰 모델 타입으로 형변환하지 않습니다. 그러나'INotifyPropertyChanged' 인터페이스를 구현한다고 가정하면 추가 지시없이 작동 할 것입니다. – dkozl

+0

미안 해요. 나의 예는 효과가 없다. 어떻게 작동시키고 싶은가. ".LP"는 제 2 열의 바인딩 값을 참조하려고합니다. 제 질문 코드를 약간 편집했습니다. – LiveKarma

답변

0

난 강력하게이 방법을 사용하지 제안합니다, 당신의 재산은 INotifyPropertyChanged

void LstLinks_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     var selItem = LstLinks.SelectedItem as YourBindingClassObject; 

     selItem.LP = "✓"; 

     LstLinks.ItemsSource = YourItemsSource; 
    } 
를 구현하는 가정을 바탕으로 MVVM을 따라갈
+0

미안해, 내가 분명히하지 않았다. 나의 예는 효과가 없다. 어떻게 작동시키고 싶은가. ".LP"는 제 2 열의 바인딩 값을 참조하려고하지만 제 복잡하지 않기 때문에 당연히 작동하지 않습니다. 내 질문 코드를 약간 편집했습니다. – LiveKarma

+0

@LiveKarma 대답을 – Sajeetharan

+0

수정했습니다. MVVM을 살펴본 후 예제를 시도해 보겠습니다. 이 게시물을 업데이트 된 상태로 유지하고이 게시물이 저에게 맞으면 답변으로 표시하십시오. – LiveKarma

0

행의 바인딩을 변경할 수 없습니다. 행을 작성할 컬럼의 Y 인딩 만 변경할 수 있습니다.

제공 한 코드는 Sajeetharan이 변경 한 사항에 가장 적합 할 것입니다. 바인딩 값이 올바른 것으로 가정합니다. 수업에 대한 정보를 제공하지 않으므로 특정 샘플이 제대로 작동하는지 확실히 말할 수는 없습니다.

또한 INotifyPropertyChanged을 구현하고 모든 속성을 수동으로 변경하는 대신 알리는 속성을 제공하는 것이 좋습니다.

0

이 작업을 수행하는 한 가지 방법은 NotificationObject (Microsoft.Practices.Prism.ViewModel)를 확장하고 LP에 대한 설정자에서 속성 변경 알림을 발생시키는 LP (LP 속성) 모델 개체를위한 것입니다. 보기를 새로 고치겠습니다.