【问题标题】:WPF DataGrid User Control - adding a new column in a viewWPF DataGrid 用户控件 - 在视图中添加新列
【发布时间】:2014-05-13 16:37:07
【问题描述】:

我有一个用户控件,它有一个包含 3 列的 Datagrid。我想在视图中使用此用户控件,但我需要向 Datagrid 添加一列,但 在此视图中。

这可能吗?

视图上的代码

// Initialising the Usercontrol on the new view
xmlns:myuct="clr-namespace:Customer.UserControls">
<Grid>
    <myuct:CustomerSearch x:Name="CS"/>
</Grid>

这在视图中正确显示了用户控件的 Datagrid 和其他项。

任何帮助将不胜感激。

【问题讨论】:

    标签: c# wpf xaml datagrid


    【解决方案1】:

    我建议你让你的用户控件接受一个可以显示和隐藏附加列的标志或开关。使用 DependencyProperties,以便您可以在 XAML 中设置标志/开关。

    // Initialising the Usercontrol on the new view
    xmlns:myuct="clr-namespace:Customer.UserControls">
    <Grid>
        <myuct:CustomerSearch x:Name="CS" ShowAddOnColumn="true"/>
    </Grid>
    

    【讨论】:

    • 我喜欢这种方法,所以基本上我明白了,在 UserControl 视图中使用一个名为“ShowAddOnColumn”的 DependencyProperty,它将隐藏/显示 DataGrid 列,所以为了澄清起见,我猜是 DataGrid 库有允许隐藏/显示列的属性吗?
    • 是的,DataGrid 列有一个可见性属性。您可以使用此属性显示和隐藏列。但是,当我提出这个建议时,我正在考虑以编程方式在用户控件代码中添加附加列,这样您就不会在后台占用一些内存,这在不需要显示列的视图中没有用。无论哪种方式都可以,取决于哪种方式最适合您的使用。
    【解决方案2】:

    以编程方式添加列:

    DataGridTextColumn textColumn = new DataGridTextColumn(); 
    textColumn.Header = "First Name"; 
    textColumn.Binding = new Binding("FirstName"); 
    dataGrid.Columns.Add(textColumn); 
    

    【讨论】:

      猜你喜欢
      • 2021-11-25
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 2010-12-06
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多