【问题标题】:Columns Visibility for xceed DataGridControlxceed DataGridControl 的列可见性
【发布时间】:2013-11-20 15:16:43
【问题描述】:

我有一个带有边界 ItemsSource 的 xceed:DataGridControl。目前我正在尝试为每个可见列设置我的 in/visible 列和标题/headertext。最好我想在我的 ViewModel 中绑定一个属性,以设置 in/visible 列及其标题。但我发现我没有办法做到这一点。有谁知道这个问题的解决方案吗?

<xceed:DataGridControl
    x:Name="dataGridControl"
    SelectedItem="{Binding SelectedTextItem, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
    ItemsSource="{Binding ItemsSourceData, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" >
</xceed:DataGridControl>

【问题讨论】:

    标签: wpf datagrid visibility xceed col


    【解决方案1】:

    是的,几个月前我确实不得不处理 xceed 的控件。

    DataGridControl 允许您自动生成列。这也是它的默认行为。

    为了拥有自己的列,您必须禁用属性 AutoCreateColumns,此外,您必须在属性 DataGridControl.Columns 上设置几列。

    在那里您将能够绑定列的Visible 属性。

    感谢 Peter 提供此代码:

    <xceed:DataGridControl ItemsSource="{Binding TextSet}" > 
      <xceed:DataGridControl.Columns>
        <xceed:Column FieldName="ColumnId" Title="{Binding DatagridTitle[ColumnId], Mode=OneWay}" Visible="True" />
      </xceed:DataGridControl.Columns>
    </xceed:DataGridControl>
    

    【讨论】:

    • 谢谢,对不起,当我有点昏昏沉沉的时候,xceed DataGridControl 的 Columns 属性是只读的。此外,我认为在我的 ViewModel 中绑定的想法不是很好,但是 Columns 是 UI 的一部分,ViewModel 不应该实现 UI 的任何部分。所以我认为现在我的视图的代码隐藏是 ColumnCollection 等属性的好地方
    • Net Dev 添加了我的问题。看看他提供的链接。
    • 如果其他开发者会为这个问题寻找解决方案,这里我想提出一个解决方案&lt;xceed:DataGridControl ItemsSource="{Binding TextSet}" &gt; &lt;xceed:DataGridControl.Columns&gt; &lt;xceed:Column FieldName="ColumnId" Title="{Binding DatagridTitle[ColumnId], Mode=OneWay}" Visible="True" /&gt; &lt;/xceed:DataGridControl.Columns&gt; &lt;/xceed:DataGridControl&gt;
    【解决方案2】:

    我也遇到过类似的问题。

    您可以使用 Visible 属性,然后执行以下操作:

    <xcdg:ColumnFieldName="ColumnId" Title="ColumnId" 
    Visible="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type typeOfAncestor}}, Path=DataGridControl.DataContext.BooleanSourceProperty}"/>
    

    例如,如果 typeOfAncestorxcdg:MergedColumn 并且 BooleanSourcePropertyIsVisble,那么代码应该是:

    <xcdg:ColumnFieldName="ColumnId" Title="ColumnId"
    Visible="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type xcdg:MergedColumn}}, Path=DataGridControl.DataContext.IsVisible}"/>
    

    那么问题就可以解决了。

    【讨论】:

      猜你喜欢
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多