2017-11-17 1 views
0

데이터 바인딩 된 DataGridview가 있습니다. 아래에 표시된 열 중 하나는 객체의 부울 값에 연결됩니다. 부울 값을 검색하는 메소드는 "curResultSet.Pass"입니다. 일반 셀에서 "참"또는 "거짓"이라고 말하는 대신 "curResult.Pass"값에 따라 해당 열에 "통과"아이콘 또는 "실패"아이콘을 표시합니다.데이터 바인딩 된 DataGridView에서 표시된 정보 변경

아이콘으로 .png를 설정하는 나의 방법이 잘못되었다는 것이 확실하지만, 나중에 걱정할 수 있습니다. 지금 당장 가장 큰 걱정거리는 아래 코드에 표시된대로 부울 값을 기반으로 DataGridViewImageViewColumn에 특정 아이콘을 설정하는 방법을 모르겠다는 것입니다.

DataGridViewImageColumn imgCol = new DataGridViewImageColumn(true); 

foreach(RunResult curResult in curResultSet) 
{ 
    bindingSource1.Add(curResult); 
} 

resultDataGridView.AutoGenerateColumns = false; 
resultDataGridView.DataSource = bindingSource1; 

imgCol.Image = Image.FromFile(imageFilePath + "NG icon.png"); 
imgCol.Icon = Icon.ExtractAssociatedIcon(imageFilePath + "OK icon.png"); 
imgCol.ValuesAreIcons = true; 

resultDataGridView.Columns.Add(imgCol); 
resultDataGridView.Columns[resultDataGridView.ColumnCount - 1].DataPropertyName = "Pass"; 
resultDataGridView.Columns[resultDataGridView.ColumnCount - 1].Name = "status"; 

누구나 "== 진정한 curResultSet는 []. 패스"때 내가 "OK icon.png"쇼를 할 수있는 방법 어떤 생각을 가지고있다 "NG icon.png"쇼 때 "curResultSet []. 패스 == 거짓 "? 감사!

답변

0

당신은 변환기를 사용하고 부울 값으로 이미지 소스에 바인딩해야합니다 공용 클래스 BoolToUriConverter : IValueConverter적인 filePath = "경로" { 개인 CONST 문자열을;

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     bool val = (bool)value ; 
     string path = (val == true) ? $"{filePath}OK icon.png" : $"{filePath}NG icon.png"; 
     return new Uri(path); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

그리고 이미지 열

<DataGrid ItemsSource="{Binding Collection1}" AutoGenerateColumns="False"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Field1" Binding="{Binding Field1}"></DataGridTextColumn> 
       <DataGridTextColumn Header="Field2" Binding="{Binding Field2}"></DataGridTextColumn> 
       <DataGridCheckBoxColumn Header="Field3" Binding="{Binding Field3}"></DataGridCheckBoxColumn> 
       <DataGridTemplateColumn> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Image Source="{Binding Field3, Converter={StaticResource boolToUriConverter}}"/> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
      </DataGrid.Columns> 
     </DataGrid> 
+0

이것은 WPF'DataGrid'에 대한 올바른 생각이지만, 영업 이익은의 WinForm에 관한 당신의 부울 열을 결합하는 데 사용할'DataGridView' - 다른 동물 완전히. – OhBeWise

관련 문제