【发布时间】:2016-11-25 13:15:59
【问题描述】:
我有一个数据网格,它由从 Web 服务检索的数据以编程方式填充。数据网格的最后一列包含复选框,允许在地图上显示每一行的值。该列是使用这样的模板列创建的:
DataGridTemplateColumn column = new DataGridTemplateColumn();
column.Header = "Show on map";
DataTemplate dt = new DataTemplate();
FrameworkElementFactory checkBoxFactory = new FrameworkElementFactory(typeof(CheckBox));
checkBoxFactory.AddHandler(CheckBox.ClickEvent, new RoutedEventHandler(CheckBoxClicked), true);
dt.VisualTree = checkBoxFactory;
column.CellTemplate = dt;
DataGrid.Columns.Add(column);
如果用户单击其中一个复选框,则会调用 CheckBoxClicked 方法并将相应的行值显示为地图上的图标(如前所述)。这很好用。但是,用户可以关闭包含数据网格的窗口,而地图与显示的图标一起留在屏幕上。
现在,当用户重新打开带有数据网格的窗口时,我想根据已经显示的图标预先选择复选框。由于复选框没有绑定,我无法将图标与它们匹配。 如何才能做到这一点?有没有办法以编程方式预选它们?还是有办法创建绑定?
【问题讨论】:
-
请,请,请使用 XAML 设置您的 UI。
-
我已经有一段时间没有这样做了,但是您可以设置的每个复选框上都应该有一个
IsChecked属性,类似于 WinForms 样式。否则,我建议您使用 XAML 来设置您的 UI 并使用简单的方法绑定。 -
好的,谢谢。但内容是高度动态的,无法使用 XAML 进行设置。
标签: c# wpf templates checkbox datagrid