将ProgressBar添加到DataGrid列

时间:2012-11-06 14:43:46

标签: c# wpf

我有一个WPF应用程序,我想在datagrid列中显示进度条。这是我到目前为止所拥有的:

    <DataGrid Name="dgOrders" ItemsSource="{Binding}" AutoGenerateColumns="False" HorizontalGridLinesBrush="#35000000" VerticalGridLinesBrush="#35000000" BorderThickness="1" CanUserAddRows="False" CanUserReorderColumns="False" CanUserResizeRows="False" CanUserSortColumns="False" EnableRowVirtualization="False" IsReadOnly="True" RowHeaderWidth="0">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Progress" Width="*" Visibility="Hidden">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ProgressBar Value="{Binding Path=ProgressValue, Mode=OneWay}" Minimum="0" Maximum="100" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

这有效,我在每一行都获得了很好的进度条。现在这里出现了我感到困惑的部分:我在UserControl中使用了这个数据网格,然后在Page中使用了这样的数据:

<Grid>
    <Controls:OrderDataGrid x:Name="cntrlOrderDataGrid"></Controls:OrderDataGrid>
</Grid>

页面是从Frame加载的。

问题是我应该如何以及在何处实现该类和ProgressValue,以便更新我的ProgressBar值绑定。

1 个答案:

答案 0 :(得分:3)

ProgressValue应该存在于您分配给网格的ItemsSource中,如果您使用的是usercontrols和frames,则它不相关

像这样的东西

public class SomeVal : INotifyPropertyChanged
{
   public int ProgressValue{...}
}

datagrid.ItemsSource = new [] {new SomeVal()};