2

そのような列にプログレスバーを追加しようとしています

<DataGrid Grid.Row="1" ItemsSource="{Binding Locations}" AutoGenerateColumns="false">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Plant}" Header="Plant" />
        <DataGridTextColumn Binding="{Binding Area}" Header="Area" />
        <DataGridTextColumn Binding="{Binding LocationName}" Header="Location" />
        <DataGridTextColumn Binding="{Binding LocationVersion}" Header="Version on location" />

        <DataGridCheckBoxColumn Binding="{Binding Deploy, Mode=TwoWay}" Header="Check to deploy" IsReadOnly="False" />
        <DataGridTemplateColumn Header="Orders Count" Width="380">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Grid>
                        <ProgressBar Grid.Row="0" Grid.Column="0"  Minimum="0" Maximum="200" Value="{Binding copyToLocationProgress ,Mode=OneWay}"/>
                    </Grid>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

これは私が使用している ILocation です:

 public interface ILocation
    {
        int LocationId { get; }

        string LocationName { get; set; }

        string Area { get; set; }

        string LocationVersion { get; set; }

        int Plant { get; set; }

        bool Deploy { get; set; }

        string FolderName { get; }

        int copyToLocationProgress { get; set; }
    }

これはViewModelにあります

public IEnumerable<ILocation> Locations { get; set; }

私もこの方法で試しました

 <DataGridTemplateColumn Header="Deploy progress" Width="380">
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <Grid>
                                                <ProgressBar
                                                    Grid.Row="0"
                                                    Grid.Column="0" 
                                                    Minimum="0"
                                                    Maximum="200" 
                                                    Value="{Binding Path=DataContext.Locations, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"/>
                                            </Grid>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                </DataGridTemplateColumn>

しかし、これは私にこのエラーを与えました:

System.Windows.Data エラー: 5: BindingExpression によって生成された値は、ターゲット プロパティに対して有効ではありません。; Value='' BindingExpression:Path=DataContext.Locations; DataItem='DataGrid' (Name=''); ターゲット要素は 'ProgressBar' (Name='') です。ターゲット プロパティは 'Value' (タイプ 'Double')

しかし、他の列のように値が表示されません。グリッドへのデータバインドだからです。

4

2 に答える 2

1

私は遅れていますが、このようなものを使用しています。テンプレート列では、セル テンプレートを使用してから、アイテム コンテナー テンプレートを使用する必要があります。

 <DataGridTemplateColumn>
                        <DataGridTemplateColumn.CellTemplate>
                        <ItemContainerTemplate>

                            <Grid>
                                <ProgressBar></ProgressBar>
                            </Grid>
                        </ItemContainerTemplate>
                        </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
于 2015-04-07T17:27:01.113 に答える