Нужна помощь о датагрид - PullRequest
0 голосов
/ 31 июля 2011

у меня есть сетка данных (см. Ниже), есть столбцы с датой и временем, как я могу сделать фон красным, где rooomNumer 777 с 08.01.2011 по 08.08.2011 с кодом позади?Колонка номера комнаты связывается с наблюдаемой коллекцией

 ObservableCollection<RoomsInfoData> _RoomsInfoCollection = new ObservableCollection<RoomsInfoData>();
        public RoomsInfo()
   public ObservableCollection<RoomsInfoData> RoomsInfoCollection
        {
            get { return _RoomsInfoCollection; }
        }

        public class RoomsInfoData
        {
            public string RoomType { get; set; }
            public string RoomNumber { get; set; }
            public string RoomStatus { get; set; }
        }
HProDataContext db = new HProDataContext();
            var _RoomNumber = (from d in db.SelectRooms select d.roomnumber).ToList();
            var _RoomType = (from d in db.SelectRooms select d.roomtype).ToList();
            var _RoomStatus = (from d in db.SelectRooms select d.status).ToList();

            for (int i = 0; i < _RoomNumber.Count; i++)
            {

                _RoomsInfoCollection.Add(new RoomsInfoData { RoomNumber = _RoomNumber[i], RoomType = _RoomType[i], RoomStatus = _RoomStatus[i] });
            }

enter image description here

Ответы [ 2 ]

2 голосов
/ 31 июля 2011

Предполагая, что

  1. "this" относится к вашему окну или пользовательскому элементу управления, в котором размещена эта сетка данных.
  2. this.dataGrid относится к вашей таблице данных, в которую вы добавили столбцы из кода.

Мы будем указывать стиль в коллекции Window / UserControl's Resources ... как это

    <UserControl.Resources> <!-- could be Window.Resources if datagrid lies in a Window -->
            <Style x:Key="RoomNumberValidationCellStyle"
                       TargetType="{x:Type DataGridCell}"> <!-- DataGridCell because we need to apply this style to specific columns -->
                    <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=RoomNumber}" Value="777">
                                    <Setter Property="Background" Value="Red" />
                            </DataTrigger>
                    </Style.Triggers>
            </Style>
    </UserControl.Resources>

в коде после того, как вы установите все столбцы в this.dataGrid ... сделайте это ...

    foreach(var col in this.dataGrid.Columns)
    {
            var headerText = (string)col.Header;
            if (headerText == "1/8/2011" || headerText.Header == "2/8/2011"
            || headerText.Header == "3/8/2011" || headerText.Header == "4/8/2011"
            || headerText.Header == "5/8/2011")
                    col.CellStyle = this.FindResource("RoomNumberValidationCellStyle") as Style;
    }

Дайте мне знать, если это поможет.

0 голосов
/ 31 июля 2011
<Style x:Key="RedRowStyle" TargetType="{x:Type dg:DataGridRow}">
        <Setter Property="Background" Value="Red"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding PropertyName}" Value="777" >
                <Setter Property="Background" Value="DarkGray" />
                <Setter Property="Foreground" Value="White" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

Просто замените PropertyName на свойство в ViewModel, где значение будет 777, и примените его к соответствующим строкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...