【发布时间】:2023-03-25 06:11:01
【问题描述】:
我有一个工作进度条显示在一个列中。但需要它来跨越整行。怎样才能做到这一点?
这行得通,单列中的进度条:
<UserControl.Resources>
<SolidColorBrush x:Key="DgGridLineBrush" Color="LightGray" />
<Style x:Key="ProgressBarStyle" TargetType="ProgressBar">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ProgressBar">
<Grid x:Name="PART_Track" >
<Rectangle x:Name="PART_Indicator" Fill="{Binding [3]}" HorizontalAlignment="Left" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<DataGrid x:Name="MbpDg" HeadersVisibility="Column" AutoGenerateColumns="False" IsReadOnly="True" CanUserAddRows="False" HorizontalAlignment="Right" ColumnHeaderHeight="20" Height="221" Margin="0,1,0,0" VerticalAlignment="Top" Width="164"
GridLinesVisibility="None" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Size" Width="55">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<ProgressBar Value="{Binding [2], Mode=OneWay}" Style="{StaticResource ProgressBarStyle}" Minimum="0" Maximum="100"/>
<TextBlock Text="{Binding [2], Mode=OneWay}" HorizontalAlignment="Right"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding [0]}" Header="Price" Width="50"/>
<DataGridTextColumn Binding="{Binding [1]}" Header="Qty" Width="30*"/>
</DataGrid.Columns>
我确实看到了this question,但尝试合并它会产生绑定异常。老实说,我真的不知道我在这里做什么。
<Setter Property="DataGrid.Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRow}">
<Grid>
<ProgressBar Value="{Binding [2], Mode=OneWay}" Style="{StaticResource ProgressBarStyle}" Minimum="0" Maximum="100"/>
</Grid>
</ControlTemplate>
</Setter.Value>
编辑: 答案效果很好,但留下了这个“错误”显示了 3 次:
System.Windows.Data Error: 1 : Cannot create default converter to perform 'one-way' conversions between types 'System.Boolean' and 'System.Windows.Controls.SelectiveScrollingOrientation'. Consider using Converter property of Binding. BindingExpression:Path=AreRowDetailsFrozen; DataItem='DataGrid' (Name='MyDg'); target element is 'DataGridDetailsPresenter' (Name=''); target property is 'SelectiveScrollingOrientation' (type 'SelectiveScrollingOrientation')
System.Windows.Data Error: 5 : Value produced by BindingExpression is not valid for target property.; Value='False' BindingExpression:Path=AreRowDetailsFrozen; DataItem='DataGrid' (Name='MyDg'); target element is 'DataGridDetailsPresenter' (Name=''); target property is 'SelectiveScrollingOrientation' (type 'SelectiveScrollingOrientation')
【问题讨论】:
-
合并单元格会有所帮助,但缺点是需要大量代码
-
这是Tutorial,但最好换一种方式
标签: c# wpf datagrid progress-bar