【发布时间】:2014-02-01 21:10:55
【问题描述】:
我使用带有 Checkbox 的 Datagrid,我想将它绑定到名为 Part 的类:
public class Part
{
public bool DoImport { get; set; }
}
我的窗口 WPF 是:
<Window x:Class="CompareWindow">
<Grid>
<DataGrid x:Name="CompareGrid" ItemsSource="{Binding}" >
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Import" Width="100" IsReadOnly="False" Binding="{Binding Path=DoImport, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
</DataGrid>
<Button x:Name="SelectAllBtn" Content="Select All" Click="SelectAllButton_Click"/>
</Grid>
</Window>
在那里,我使用了一个名为 Select All 的按钮,如果单击它应该会立即检查所有复选框:
public partial class CompareWindow : Window, INotifyPropertyChanged {
public CompareWindow(Part somePart) {
_changedParts = new ObservableCollection<Part>();
_changedParts.Add(somePart);
CompareGrid.DataContext = _changedParts;
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string name) {
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
private void SelectAllButton_Click(object sender, RoutedEventArgs e) {
ChangedParts.ToList().ForEach(x => x.DoImport = true);
}
private ObservableCollection<Part> _changedParts;
public ObservableCollection<Part> ChangedParts {
get { return _changedParts; }
set {
_changedParts = new ObservableCollection<Part>();
foreach (var part in value) {
_changedParts.Add(part);
}
OnPropertyChanged("ChangedParts");
}
}
}
但是当我点击按钮时没有任何反应。为什么?
【问题讨论】:
标签: c# wpf data-binding properties datagrid