我有我整個應用程序中使用網格控件。我想擴展網格控件以包含一個上下文菜單,其中一個項目「凍結/解凍列」。如果我選擇使用自定義的控制,我無法實現的控制範圍之內此功能 - 相反,我要實現我的地方把我的自定義控制功能。另一種方法是用戶控制,其中我可以實現所有必要的功能的控制範圍內:WPF用戶VS自定義控件
<Grid>
<dxg:GridControl Name="gridData" DataSource="{Binding}" dx:DXSerializer.StoreLayoutMode="All">
<dxg:GridControl.Resources></dxg:GridControl.Resources>
<dxg:GridControl.Columns />
<dxg:GridControl.View>
<dxg:TableView ShowGroupPanel="False" MouseRightButtonUp="TableView_MouseRightButtonUp">
<dxg:TableView.ColumnMenuCustomizations>
<dxb:BarButtonItem Name="freezeColButton" Content="Freeze Column(s)" dxb:BarItemLinkActionBase.ItemLinkIndex="0" ItemClick="freezeColButton_ItemClick" />
</dxg:TableView.ColumnMenuCustomizations>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
</Grid>
通知,TableView.ColumnMenuCustomization標籤包括用於冷凍的事件處理程序/解凍功能。
但是,用戶控件唯一的問題是我無法訪問基礎Grid的Columns屬性。例如,當我把我的用戶控件(如上所述)在一個窗口中,我得到一個錯誤(錯誤25:標籤「ExtendedGridControl.Columns」不存在XML命名空間存在「CLR的命名空間:UI.Controls」):
<Window>
...
<Grid>
<uc:ExtendedGridControl x:Name="extendedGridData" >
<uc:ExtendedGridControl.Columns>
<dxg::GridColumn FieldName="FieldA" Visible="True" />
...
</uc:ExtendedGridControl.Columns>
</uc:ExtendedGridControl>
</Grid
</Window>
如何顯示GridControl屬性?任何幫助/建議將不勝感激。
感謝您的快速響應!你推薦的偉大工程 - 我用了CLR的屬性,它引用了內部控制的財產: 公共GridColumnCollection列 { 得到 { 回報gridData.Columns; } set { gridData.Columns = value; } } 但是,現在我的窗口(包含用戶控件)將覆蓋在底層網格屬性「列」中定義的任何設置。 – 2011-06-07 14:57:11
是的,對於喜歡收藏欄你通常與正常CLR的屬性去。很高興它幫助:} – 2011-06-07 14:58:38
我能保證我保持用戶控件(不是最優雅的)創建的任何現有設置: 設置 {// 確保現有的集合不丟失 的foreach(在VAR的GridData項目。 View.ColumnMenuCustomizations) value.ColumnMenuCustomizations.Add(項目); gridData.View =值; } – 2011-06-07 15:05:05