0

私の質問は、C#.NET4.0でプログラミングするページフォーム内のDataGridについてです。このアプリケーションはデスクトップ用であり、WebやSilverlight用ではありません。

背景を変更するよりも、ページのDataGridに変更を加えました。残念ながら、行を選択すると、青に変わるだけで(選択されていることを識別する色)、その行の列にのみ影響します。これらのデータグリッドの中には、スペースが残っています。私がする必要があるのは、その空白スペースを含めて、その行を完全に選択することです。

変更されたもう1つの点は、マウスが任意のレコード上にあるときのマウスの動作です。この変更後、この動作は発生しなくなりました。

私が何をする必要があるか手がかりはありますか?

編集:コードの追加:

私のコンバーター:

public class RetornaCorFundoGrid : DependencyObject, IValueConverter
{
    public static DependencyProperty CorFundoGridParameterProperty =
        DependencyProperty.Register("CorFundoGridParameter", typeof(IEnumerable<Object>), typeof(RetornaCorFundoGrid));

    public IEnumerable<Object> CorFundoGridParameter
    {
        get { return ((IEnumerable<Object>)GetValue(CorFundoGridParameterProperty)); }
        set { SetValue(CorFundoGridParameterProperty, value); }
    }

    public object Convert(Object value, Type targetType, object parameter, CultureInfo culture)
    {
        try
        {
            if (System.Convert.ToInt16(value) < 5)
                return Brushes.BlueViolet;
            if (System.Convert.ToInt16(value) < 15)
                return Brushes.CadetBlue;
            else
                return Brushes.Coral;
        }
        catch (Exception)
        {
            return Brushes.Black;
        }

    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

私のバインディングリフレクター:

<ut:BindingReflector Target="{Binding Mode=OneWayToSource, Source = {StaticResource RetornaCorFundoGrid}, Path=CorFundoGridParameter}" 
                         Source="{Binding Parameters, Mode=OneWay}" />

私の列のスタイル:

<DataGrid.RowStyle>
    <Style TargetType="{x:Type DataGridRow}">
        <Setter Property="Background" Value="{Binding Path=Id, Converter={StaticResource RetornaCorFundoGrid}}"/>
    </Style>
</DataGrid.RowStyle>
4

3 に答える 3

0

私はあなたが何を求めているのか理解するのに少し苦労していますが、多分これは助けになるでしょう。全行のみで選択するテーブルを作成する場合は、SelectionModeをFullRowSelectに設定できます。次に、テーブルの任意の場所をクリックすると、クリックしたセルの行全体が表示されます。

セルの色付けについては、現在の行内の列を繰り返し処理し、BackColorとSelectionBackColorの両方を次のように任意の色に設定できます。

foreach (DataGridCell cell in myRow.Cells)
{
    cell.Style.BackColor = myColor;
    cell.Style.SelectionBackColor = myColor;
}

マウスオーバーの動作がどうなっているのかわからない。

于 2012-05-04T23:09:43.870 に答える
0

DataGrid.RowStyleDataGridの行全体に色を付けるには、行の背景色を定義するのスタイルを設定する必要があります。セルの背景を透明に設定するか(行の色を非表示にしないように)、行の色に一致するように変更する必要がある場合があります。さらに、選択色と、マウスオーバーイベントを処理するEventTriggerを設定する必要があります。

于 2012-05-05T03:11:54.570 に答える
0

問題が見つかりました...ResourceDictionary.xamlを使用しています。その中には、DataGridRowの動作定義があります。このコンポーネント内で定義すると、オーバーライドします。

したがって、この問題を解決するために、iveはBasedOnを追加しました:

<DataGrid.RowStyle>
            <Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}">
                <Setter Property="Background" Value="{Binding Path=Id, Converter={StaticResource RetornaCorFundoGrid}}"/>
            </Style>
        </DataGrid.RowStyle >

単純ですが、迷惑です。

ご協力いただきありがとうございます!

于 2012-05-07T20:44:52.597 に答える