我想顯示一個彈出窗口,通過在數據網格的最後一行添加一個按鈕來幫助用戶向數據網格添加新行。我覺得必須有DataGridTemplateColumn
屬性我必須爲newrow/addrow
模板設置?如何將按鈕添加到數據網格的最後一行/新行?
0
A
回答
1
你可以做的是寫一個樣式「DataGridRow」作爲
氏的工作實例
<Style x:Type="DataGridRow">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRow}">
<Grid Background="{TemplateBinding Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0" />
<Button Visibility = "{Binding IsLastRow}"/>!--can set converter to convert boolean to visibilty as well.
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
所以綁定的屬性基本檢查的最後一排的邏輯。(我不確定wpf datagrid本身是否提供某種類型的屬性,如「IsLastRow」,但如果沒有的話,你可以編寫自己的邏輯)。
在ContentTemplate中,您可以定義您的按鈕處理程序或命令對象。
0
你可以使用一個DataGridRow風格與數據觸發改變的最後一排的模板:
<DataGrid x:Name="dgrid">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Static CollectionView.NewItemPlaceholder}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRow}">
<Border x:Name="DGR_Border" BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<Grid>
<SelectiveScrollingGrid>
<SelectiveScrollingGrid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</SelectiveScrollingGrid.ColumnDefinitions>
<SelectiveScrollingGrid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</SelectiveScrollingGrid.RowDefinitions>
<DataGridCellsPresenter Grid.Column="1" ItemsPanel="{TemplateBinding ItemsPanel}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<DataGridDetailsPresenter Grid.Column="1" Grid.Row="1" SelectiveScrollingGrid.SelectiveScrollingOrientation="{Binding AreRowDetailsFrozen, ConverterParameter={x:Static SelectiveScrollingOrientation.Vertical}, Converter={x:Static DataGrid.RowDetailsScrollingConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Visibility="{TemplateBinding DetailsVisibility}"/>
<DataGridRowHeader Grid.RowSpan="2" SelectiveScrollingGrid.SelectiveScrollingOrientation="Vertical" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Row}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</SelectiveScrollingGrid>
<Button Content="Add New" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
</DataGrid>
或者 - 如果你想要把按鈕在一個特定的列 - 你可以使用一個DataGridTemplateColumn與一個CellTemplate使用類似的數據觸發器:
<DataGrid x:Name="dgrid">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock>...</TextBlock>
<Button x:Name="btn" Content="Add" Visibility="Collapsed" />
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType=DataGridRow}}"
Value="{x:Static CollectionView.NewItemPlaceholder}">
<Setter TargetName="btn" Property="Visibility" Value="Visible" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
相關問題
- 1. 添加新行,到數據網格後
- 2. 如何將一個按鈕添加到tableview的最後一行?
- 3. 當點擊數據網格外部的按鈕時,如何添加新行到數據網格(WPF工具包)
- 4. 如何將按鈕添加到UItableviewcontroller的最後一部分?
- 5. 使用按鈕將新數據行添加到jTable單擊
- 6. 如何將行添加到GXT網格
- 7. 將一個按鈕添加到表格的每一行
- 8. VBA將數據添加到Excel 2010中的最後一行
- 9. 如何動態添加按鈕到SilverLight數據網格
- 10. 使用按鈕添加新行到asp .net網格視圖使用按鈕
- 11. 向每個數據網格行添加按鈕
- 12. 將按鈕添加到WPF數據網格
- 13. VBA宏將列數據添加到最後一行
- 14. 在運行時將行和列添加到WPF數據網格
- 15. 如何向特定類的最後一行添加表格行?
- 16. 如何將新行添加到asp網格時保留上一行值
- 17. 將行添加到最後一個單元格的底部
- 18. 需要在WPF的數據網格中添加新行並添加特定數據,每次點擊按鈕
- 19. 如何在按鍵事件上添加數據網格行?
- 20. 如何將FPDF總計添加到表的最後一行?
- 21. 如何將新列添加到網格?
- 22. UITableViewCell子類 - 如何將一個按鈕添加到某些行
- 23. 用第二行到最後一行的數據更新最後一行
- 24. 如何將一個按鈕添加到UIScrollView的最後加載更多?
- 25. 如何將行添加到每隔一行的R數據框?
- 26. 查找表格中最後一次使用的行,然後將數據添加到下面的其餘行
- 27. 計數數據網格上的行,並將其添加爲一個新的列
- 28. 如何在JTable中添加新行,同時按一下按鈕
- 29. 如何添加類=「最後」到最後一行在環路
- 30. 如何刪除HTML表格的最後td並添加新行?
我建議將該按鈕放置在DataGrid附近,而不是在它內部。這將使它更容易和更清潔。 – icebat