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;
}
}
}
내가 뭔가를 분명 실종,하지만 난 그냥 보이지 않아요 초보자되고있어 확신 . 어떤 도움을 주셔서 감사합니다.
감사합니다,
매그너스
복사 및 지난 오류가 발생했음을 확인했습니다. 바인딩 경로가 NONC 및 OK로 변경되었습니다. 그래도 여전히 작동하지 않습니다. –