1
我試圖在選中給定行的複選框時更改我的數據網格行的顏色,以及未選中時應該將值重置爲前一個值。當複選框被選中時,更改wpf數據網格行背景顏色
我正在使用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"); }
}
請讓我知道錯了我在做什麼,以獲得給定功能的工作。
在此提前致謝,萬一缺少信息請通知我。
你試圖刪除的DataContext。從綁定表達式? –
或者,你是否分配了你的datacontext? – Ugur
我試過它不工作.. – Nyk