簡體   English   中英

選中復選框時更改WPF數據網格行背景色

[英]Change wpf data grid row background color when checkbox is checked

當給定行的復選框被選中時,我試圖更改數據網格行的顏色,而當未選中該復選框時,應將值重置為前一個值。

我正在使用MVVM來實現上述功能。

我的XAML代碼:-

 <Window.Resources>
        <Style x:Key="RowStyle"  TargetType="{x:Type DataGridRow}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding DataContext.IsChecked, UpdateSourceTrigger=PropertyChanged}" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>

 </Window.Resources>

<Grid>
      <DataGrid Name="lbUsers" ItemsSource="{Binding  Data}" CanUserAddRows="False" Grid.Column="1" Grid.Row="1"  SelectedIndex="{Binding SelectionIndexChange, Mode=TwoWay}" AutoGenerateColumns="False">

            <DataGrid.Columns>

                <DataGridTemplateColumn>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox Width="45" Height="20" Command="{Binding ElementName=lbUsers,Path=DataContext.IsChecked}" ></CheckBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>

        </DataGrid>
</Grid>

下面給出的是視圖模型代碼:

        public ViewModel ()
        {
            Data = new ObservableCollection<CommonData>
            {

            };

        }



    private ObservableCollection<CommonData> _data;
        public ObservableCollection<CommonData> Data
        {
            get
            {
                if (_data == null)
                {
                    _data = new ObservableCollection<CommonData>()
                    {

                    };

                }

                return _data;
            }
            set
            {
                if (value != this._data)
                {
                    this._data = value;

                    NotifyPropertyChanged("Data");
                }
            }
        }



        private bool _isChecked;
        public bool IsChecked
        {
            get { return _isChecked; }
            set { this._isChecked = value; NotifyPropertyChanged("IsChecked"); }
        } 

請讓我知道我在做錯什么才能使給定的功能正常工作。

在此先感謝您,如果缺少信息,請告訴我。

幾件事:

您已經為樣式分配了x:Key ,但是沒有在DataGrid上使用它。 刪除鍵以使其成為所有DataGridRow的默認樣式,或將其添加到網格中:

RowStyle="{StaticResource RowStyle}"

DataTrigger綁定中,您還需要添加

ElementName=lbUsers

此外,您的Checkbox未正確綁定-不能通過Command完成。 您將需要改變

Command={Binding...

IsChecked={Binding...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM