2013-01-08 5 views
1

두 개의 확인란 중 하나를 선택했는지에 따라 그리드의 배경색을 변경하려고합니다. 그리드에서 행을 선택하면 데이터를 사용하여 하나의 필드의 값이 두 개의 확인란 중 어느 것이 그리드에서 선택되었는지에 따라 다른 테이블에 삽입 할 수 있습니다. 아래는 현재 코드입니다. 나는 성공하지 못한 채 여러 가지 시도를했습니다.WPF - 행의 배경색을 설정하는 Datagrid의 확인란

XAML : 뒤에

<Window x:Class="TESTWPF.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:col="clr-namespace:System.Collections;assembly=mscorlib" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <Button Content="Button" HorizontalAlignment="Left" Margin="43,35,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1" RenderTransformOrigin="0.507,0.545"/> 
    <DataGrid Name="dg" 
       HorizontalAlignment="Left" 
       Margin="10,81,0,0" 
       VerticalAlignment="Top" 
       Height="214"     
       AutoGenerateColumns="False" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" Width="497"> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn Header="OK" Width="40"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox Name="OKCCheckBox" 
            HorizontalAlignment="Center" 
            IsChecked="{Binding Path=NONC, UpdateSourceTrigger=PropertyChanged}" 
            /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
          <DataGridTextColumn Header="RMA ID" 
           Width="80" 
           Binding="{Binding Path=RMA_ID}" 
           /> 
      <DataGridTextColumn Header="SERIAL #" 
           Width="80" 
           Binding="{Binding Path=SERIAL_ID}" 
           /> 
      <DataGridTextColumn Header="PART #" 
           Width="150" 
           Binding="{Binding Path=INV_ITEM_ID_ORDERED}" 
           /> 
      <DataGridTextColumn Header="QTY" 
           Width="50" 
           Binding="{Binding Path=QTY}" 
           /> 
      <DataGridTemplateColumn Header="NonC" Width="40"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox Name="NONCCheckBox" 
            HorizontalAlignment="Center" 
            IsChecked="{Binding Path=NONC, UpdateSourceTrigger=PropertyChanged}" 
            /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
     <DataGrid.RowStyle> 
      <Style TargetType="DataGridRow"> 
       <Setter Property="Background" Value="Beige"/> 
       <Style.Triggers> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="Background" Value="Bisque"/> 
        </Trigger> 
        <Trigger Property="IsSelected" Value="true"> 
         <Setter Property="Background" Value="Bisque"/> 
        </Trigger> 
        <DataTrigger Binding="{Binding Path=RMA_ID}" Value="HJRA0000P4"> 
         <Setter Property="Background" Value="Green"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </DataGrid.RowStyle> 
    </DataGrid> 
</Grid> 

C# 코드 :

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using System.Data; 
using Oracle.DataAccess.Client; 

namespace TESTWPF 
{ 
/// <summary> 
/// Interaction logic for MainWindow.xaml 
/// </summary> 
public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    public DataSet GetItemInformationRMAID() 
    { 
     string _connstring = "Data Source=ORCL;User Id=TEST;Password=TEST;"; 
     string _sql; 
     DataSet _ds = new DataSet(); 
     try 
     { 
      OracleConnection _connObj = new OracleConnection(_connstring); 
      _connObj.Open(); 
      _sql = "select rma_id, serial_id, inv_item_id_ordered, qty from return_line"; 
      OracleDataAdapter _adapterObj = new OracleDataAdapter(); 
      OracleCommand cmd = new OracleCommand(_sql, _connObj); 
      _adapterObj.SelectCommand = cmd; 
      _adapterObj.Fill(_ds); 
      _connObj.Close(); 
      _connObj.Dispose(); 
      _connObj = null; 
      return _ds; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
      return _ds; 
     } 
    } 

    private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     dg.ItemsSource = GetItemInformationRMAID().Tables[0].DefaultView; 
    } 
} 
} 

내가 뭔가를 분명 실종,하지만 난 그냥 보이지 않아요 초보자되고있어 확신 . 어떤 도움을 주셔서 감사합니다.

감사합니다,

매그너스

답변

0

모두 체크 박스 = NONC 하나 개의 속성 바인딩 경로에 바인더 제본 이유는 무엇입니까?

+0

복사 및 지난 오류가 발생했음을 확인했습니다. 바인딩 경로가 NONC 및 OK로 변경되었습니다. 그래도 여전히 작동하지 않습니다. –

관련 문제