2017-03-24 3 views
0

목록보기의 한 열만 새로 고치는 방법이 있습니까?목록보기에서 하나의 열만 새로 고치는 방법

Listview1.Items.Refresh()는 전체 목록보기를 새로하지만 난 단 하나의 열

+0

WPF를 사용하고 있지 않습니까? –

+0

불행히도 내가 할 –

+0

왜 걱정하지? MVVM 패턴을 따르고 있다면 WPF로 쉬운 작업. 몇 가지 코드를 보여줄 수 있습니까? MVVM을 사용하고 있습니까? –

답변

0

이가있는 ListView에서 하나의 속성을 업데이트하기위한 샘플입니다을 새로 고칠.

창 (ListViewButton 포함). 뷰에서 ListView

public class ItemViewModel : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    protected void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 

    string _first; 
    public string First 
    { 
     get 
     { 
      return _first; 
     } 

     set 
     { 
      _first = value; 
      OnPropertyChanged("First"); 
     } 
    } 

    string _second; 
    public string Second 
    { 
     get 
     { 
      return _second; 
     } 

     set 
     { 
      _second = value; 
      OnPropertyChanged("Second"); 
     } 
    } 
} 

의 항목에 대한 창

public class MainViewModel : INotifyPropertyChanged 
{ 
    public RelayCommand DoSomethingCommand { get; set; } 

    public event PropertyChangedEventHandler PropertyChanged; 
    protected void OnPropertyChanged(string name) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(name)); 
     } 
    } 

    public MainViewModel() 
    { 
     Items = new ObservableCollection<ItemViewModel> 
     { 
      new ItemViewModel { First = "eins", Second = "zwei" }, 
      new ItemViewModel { First = "drei", Second = "vier" }, 
      new ItemViewModel { First = "fünf", Second = "sechs" } 
     }; 

     DoSomethingCommand = new RelayCommand(OnDoSomething); 
    } 

    private void OnDoSomething() 
    { 
     Items.First().First = "sieben"; 
    } 

    ObservableCollection<ItemViewModel> _items; 
    public ObservableCollection<ItemViewModel> Items 
    { 
     get 
     { 
      return _items; 
     } 

     set 
     { 
      _items = value; 
      OnPropertyChanged("Items"); 
     } 
    } 
} 

뷰 모델에 대한

<StackPanel> 
    <ListView ItemsSource="{Binding Items}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="100" /> 
         <ColumnDefinition Width="100" /> 
        </Grid.ColumnDefinitions> 
        <TextBlock Grid.Column="0" 
           Text="{Binding First}" /> 
        <TextBlock Grid.Column="1" 
           Text="{Binding Second}" /> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
    <Button Command="{Binding DoSomethingCommand}" 
      Content="Do something" /> 
</StackPanel> 

뷰 모델은 각 항목에 대한 두 TextBlockListView 있습니다. 버튼을 누르면 첫 번째 항목의 속성 First이 업데이트됩니다. 이 샘플 코드는 문제를 파악하는 데 도움이 될 것입니다. RelayCommandICommand에 대한 것입니다.