2017-01-06 3 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を使用する前にItemsコレクションが空でなければならない」というエラーが表示されます。非常に困惑しています。いくつかの助けに感謝。

答えて

1

問題は、同じ列を2回定義したことです。

<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

関連する問題