【问题标题】:checkboxes from code behind来自后面代码的复选框
【发布时间】:2012-04-17 21:06:28
【问题描述】:

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

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

我想要这个动态列中的CheckBox,而不是 displaymemberbinding 显示的内容。

【问题讨论】:

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


    【解决方案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 并通过 CodeBehind 中的 Key 访问它..

    CellTemplate = TryFindResource("myDataTemplateKey") as DataTemplate
    

    【讨论】:

    • 我认为更好的方法是使用 SetResourceReference 而不是 TryFindResource ;)
    • 非常感谢您的帮助,我真的很感激。第二个选项效果很好。但另一个问题是我如何将内容添加到像 这样的复选框中,并根据事件获取每行的主题 ID,以获取未单击的复选框。非常非常感谢
    猜你喜欢
    • 2015-12-18
    • 2012-03-20
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多