来自代码的复选框

时间:2012-04-04 07:02:10

标签: wpf data-binding user-controls wpf-controls

我有3列使用数据库中的xaml中的绑定填充,然后我在ListView中有一些动态的列。动态列具有从后面的代码填充的标题,例如:

viewLayout.Columns.Add(
    new GridViewColumn {       
        Header = subjectvalues_forstdatt[i],
        DisplayMemberBinding = new Binding(String.Format("[{0}]", i))    
    }
);

我想在此动态列中使用CheckBox,而不是displaymemberbinding显示的内容。

1 个答案:

答案 0 :(得分:1)

没有测试过,但是这样的事情应该有效:

  DataTemplate template = new DataTemplate { DataType = typeof(object) };  // <-- insert your concrete objet type here

  FrameworkElementFactory stackPanelFactory = new FrameworkElementFactory(typeof(StackPanel));
  stackPanelFactory.SetValue(StackPanel.OrientationProperty, Orientation.Vertical);

  FrameworkElementFactory checkbox = new FrameworkElementFactory(typeof(CheckBox));
  checkbox.SetBinding(CheckBox.IsCheckedProperty, new Binding(String.Format("[{0}]", subjectvalues_forstdatt[i]));
  stackPanelFactory.AppendChild(checkbox);


  viewLayout.Columns.Add(new GridViewColumn
  {

    Header = subjectvalues_forstdatt[i],
    CellTemplate = template

或者我更喜欢在XAML中编写DataTemplate并通过KeyBehind中的Key访问它。

CellTemplate = TryFindResource("myDataTemplateKey") as DataTemplate