1

2 つのチェック ボックスのどちらがオンになっているかに応じて、グリッドの背景色を変更しようとしています。グリッドで行を選択したら、データを使用して別のテーブルに挿入し、グリッドで 2 つのチェック ボックスのどちらが選択されているかに応じて 1 つのフィールドの値を変更したいと考えています。以下は私の現在のコードです。私は成功せずにいくつかのことを試みました。

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;
    }
}
}

明らかな何かが欠けていると確信していますが、初心者であるため、それが見えていません。どんな助けでも大歓迎です。

ありがとう、

マグナス

4

1 に答える 1

0

両方のチェックボックスが 1 つのプロパティ Binding Path=NONC にバインドされているのはなぜですか?

于 2013-01-09T15:08:42.003 に答える