2017-01-06 1 views
0
에 따라

내 XAML 코드 :VB.net XAML 데이터 그리드 셀 색상 변경 값

<Window x:Class="MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:Datagrid_Binding" 
     mc:Ignorable="d" 
     Title="MainWindow" Height="8517" Width="1244"> 
    <Grid> 
     <DataGrid x:Name="WaterfallDataGrid" CanUserSortColumns="False" ColumnWidth="60" AutoGenerateColumns="False"> 



      <DataGrid.Columns> 
       <DataGridTextColumn Header="Load" Binding="{Binding Load}"></DataGridTextColumn> 
       <DataGridTextColumn Header="PF" Binding="{Binding PF}"></DataGridTextColumn> 
       <DataGridTextColumn Header="Spare" Binding="{Binding Spare}"></DataGridTextColumn> 
      </DataGrid.Columns> 

      <DataGridTextColumn Binding="{Binding Load}"> 
       <DataGridTextColumn.ElementStyle> 
        <Style TargetType="{x:Type TextBlock}"> 
         <Style.Triggers> 
          <Trigger Property="Text" Value="Full Load"> 
           <Setter Property="Background" Value="LightGreen"/> 
          </Trigger> 
         </Style.Triggers> 
        </Style> 
       </DataGridTextColumn.ElementStyle> 
      </DataGridTextColumn> 


     </DataGrid> 
    </Grid> 
</Window> 

내 VB.net 코드입니다.

Class MainWindow 
    Public Sub New() 

     ' This call is required by the designer. 
     InitializeComponent() 

     ' Add any initialization after the InitializeComponent() call. 
     Dim dt3 As New DataTable("Waterfall") 

     dt3.Columns.Add("Load") 
     dt3.Columns.Add("PF") 
     dt3.Columns.Add("Spare") 
     'dt3.rows.add(New Object() {"full load", "0.8", "20%"}) 
     dt3.Rows.Add("full load", "0.8", "20%") 
     WaterfallDataGrid.ItemsSource = dt3.DefaultView 

    End Sub 
End Class 

내가하고 싶은 것은 셀에 "전체로드"텍스트가 있으면 셀 색상이 바뀌는 것입니다. 런타임에 "ItemsSource를 사용하기 전에 항목 컬렉션이 비어 있어야합니다."라는 오류가 나타납니다. 이것에 매우 의아해했다. 도움을 주신 분도 계십니다.

답변

1

문제는 동일한 열을 두 번 정의했다는 것입니다.

<Window x:Class="MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
     <Grid> 
      <DataGrid x:Name="WaterfallDataGrid" CanUserSortColumns="False" ColumnWidth="60" AutoGenerateColumns="False"> 
       <DataGrid.Columns> 
        <DataGridTextColumn Header="Load" Binding="{Binding Load}"> 
         <DataGridTextColumn.ElementStyle> 
          <Style TargetType="{x:Type TextBlock}"> 
            <Style.Triggers> 
            <Trigger Property="Text" Value="full load"> 
             <Setter Property="Background" Value="LightGreen"/> 
            </Trigger> 
           </Style.Triggers> 
          </Style> 
         </DataGridTextColumn.ElementStyle> 
        </DataGridTextColumn> 
        <DataGridTextColumn Header="PF" Binding="{Binding PF}"></DataGridTextColumn> 
        <DataGridTextColumn Header="Spare" Binding="{Binding Spare}"></DataGridTextColumn> 
       </DataGrid.Columns> 
      </DataGrid> 
     </Grid> 
    </Window> 
+0

이 셀이 표현 "최대 부하"...이 예외를 방지하는 것입니다 – Tofulover

+0

포함 된 경우 셀 색상을 변경하는 것입니다 내가 무엇을 찾고 있어요으로 내 문제를 해결하는 방법을 확실하지. – MyB

+0

Loaded 이벤트는 잊어 버리십시오. 문제는 열을 정의한 방식입니다. 스타일은 열 정의 또는 자원 섹션에서 정의해야합니다. – MyB