我想在所选复选框的基础上显示数据网格中的项目。
当前情景: 现在,我的代码总是会显示我最新复选框选中文件中的项目。对于例如如果我选择了第一个复选框,则第一个文件中的项目会正确显示,同样如果我选择了第二个复选框,则会显示第二个文件中的项目。
必填用例(不能这样做) 如果同时选中了两个复选框,则应显示两个文件中的项目。其次,如果我取消选中一个复选框,则不应显示该文件中的项目。我的意思是应该根据复选框选择动态更新项目。
我的尝试
FrameworkElementFactory FF = new FrameworkElementFactory(typeof(CheckBox));
FF.SetBinding(CheckBox.BindingGroupProperty, new Binding("Index"));
FF.SetBinding(CheckBox.IsCheckedProperty, new Binding("FileSelected") { UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged });
FF.SetValue(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Center);
for (int i = 0; i < Resultnew.Count; i++)
{
var Dgrh = new DataGridRowHelper() { File_Name = lb1.Content, Index = i };
Dgrh.ThrowFileSlctdEvent += (sender1, args) => {items = PopulateVariables(Resultnew[Dgrh.File_Name.ToString()]); DataGrid.ItemsSource = items; };
Dgrh.ThrowFileNotSlctdEvent += (sender2, args) => { };
A2lFilesPopulateList.Items.Add(Dgrh);
}
解释
ObservableCollection<DataGridRowHelper> items = new ObservableCollection<DataGridRowHelper>();
private Dictionary<String, ParsedResult> Resultnew = new Dictionary<String, ParsedResult>();
public delegate void EventHandler(object sender, EventArgs args); //Defined in DataGridrowhelperClass
public event EventHandler ThrowFileSlctdEvent = delegate { }; //Defined in DataGridrowhelperClass
public event EventHandler ThrowFileNotSlctdEvent = delegate { }; //Defined in DataGridrowhelperClass
一种可能的解决方案 按“确定”按钮。选择复选框后,用户每次都必须单击“确定”按钮。将选中的复选框作为列表发送,并相应地显示文件。 (我已经成功实现了这个,但我不想要这个解决方案,因为它不是用户友好的。)
请建议我如何实施“必需的UseCase”