2017-12-23 26 views
0

8 개 열의 데이터 격자가 있으며 첫 번째 2 열 값을 연결하고 모든 행의 7 번째 열에 바인딩합니다. [바인딩 프로세스는 6 번째 열의 일정이 닫힌 이벤트에서 수행됩니다] 이 바인딩 된 후 7 열 값을 보세 값을 특정 행의 7 셀에서 볼 수 있지만 특정 셀을 두 번 누른 다음 데이터를 볼 수 있습니다 ... 나는 무엇이 잘못되고 있는지 모르겠다. .Datagrid 셀 내용이 WPF에 표시되지 않습니다.

This is the image of my Datagrid

public class pojo 
{ 
    public string Prefix { get; set; } 
    public int Year { get; set; } 
    public int QuarterNo { get; set; } 
    public int SerialNo { get; set; } 
    public string From { get; set; } 
    public string To { get; set; } 
    public string PeriodName { get; set; } 
} 

ObservableCollection<pojo> models = new ObservableCollection<pojo>(); 

private void Period_Name(object sender, RoutedEventArgs e) 
{ 
    var rowdata = calendarmstrDG.SelectedItem as pojo; 
    var prefix = rowdata.Prefix; 
    int year = rowdata.Year; 
    int year_twodigits = year % 100; 
    string sth = prefix + '-' + year_twodigits.ToString(); 
    pojo obj = (pojo)calendarmstrDG.SelectedItem; 
    obj.PeriodName = sth; 
} 
8 열

에 대한

XAML 코드

<DataGridTextColumn Binding="{Binding Path=PeriodName}" Width="85" IsReadOnly="True" Header="Period Name"/> 
+0

당신은 내가'INotifyPropertyChanged'를 추측 @sTrenat 즉시 – sTrenat

+0

을 설정 한 후 UI에 이러한 결과를 얻을 수 INotifyOfPropertyChanged를 사용해야합니다 : – JohnyL

+0

그냥 검색 이를 위해 StackOverflow에서도 수백 가지가이 인터페이스를 구현하는 방법에 대한 답변을 제공합니다. – sTrenat

답변

0

클래스 (다른 필드를 생략)과 같아야합니다

public class pojo : INotifyPropertyChanged 
{ 

    private string _prefix; 
    private int _year; 

    public string Prefix 
    { 
     get => _prefix; 
     set 
     { 
      if (_prefix == value) return; 
      _prefix = value; 
      OnPropertyChanged(nameof(PeriodName)); 
     } 
    } 
    public int Year 
    { 
     get => _year; 
     set 
     { 
      if (_year == value) return; 
      _year = value; 
      OnPropertyChanged(nameof(PeriodName)); 
     } 
    } 
    public string PeriodName => _prefix + '-' + (_year % 100).ToString(); 

    public event PropertyChangedEventHandler PropertyChanged; 
    void OnPropertyChanged(string prop) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop)); 
    } 
} 
+0

실제로 잘못된 속성에 대해 알림을 보냈습니다. P는 Year와 Period 대신 PeriodName에 있어야합니다. – sTrenat

+0

@sTrenat Nope, mate! 'PeriodName'은이 두 필드에 바인딩됩니다. 실제로 OP에는 MultipleBinding이 있어야합니다 (OP에는 XAML이 포함되지 않았습니다). :) – JohnyL

+0

그는 정상적인 바인딩을 사용하고 코드 뒤에 그것을 연결하십시오. 게다가, mulitBinding Notify는 Ui에 의해 설정되어 있으므로 Code Behind는 필요하지 않을 것입니다 : P – sTrenat