WPF:ListView中的进度条

7

我试图在ListView中显示来自我的ObservableCollection<MyData>的信息。 MyData包含以下内容:

string Name
string Location
int Progress

使用 DataBinding,我可以在它们自己的列中显示我的 ObservableCollection<MyData> 中所有项目的 NameLocation。但是,如何添加一个带有内部 ProgressBarProgress 列?Progress 是一个百分比。

3个回答

12
<ListView ItemsSource="{Binding PersonList}">  
    <ListView.View> 
        <GridView>  
            <GridViewColumn Width="140" Header="GameName" DisplayMemberBinding="{Binding Name}"/>
            <GridViewColumn Width="140" Header="Progress">
                <GridViewColumn.CellTemplate>  
                    <DataTemplate>
                        <ProgressBar Maximum="100" Value="{Binding Progress}"/>
                    </DataTemplate>
                 </GridViewColumn.CellTemplate>  
            </GridViewColumn>
        </GridView>  
    </ListView.View>  
</ListView>

6

您在XAML中的ListView:

<ListView x:Name="DataView">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <Label Content="{Binding Path=Name}" />
                    <ProgressBar Height="20" Width="100" Value="{Binding Path=Progress}" />
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
</ListView>

代码后置文件:

internal class MyData
{
    public string Name { get; set; }
    public int Progress { get; set; }
}

...

var items = new ObservableCollection<MyData>();

items.Add(new MyData() { Name = "Some", Progress = 25 });
items.Add(new MyData() { Name = "Another", Progress = 91 });

DataView.ItemsSource = items;

1
只需将MyData中的Progress属性绑定到ProgressBar.Value,并将预期的最大值设置为ProgressBar.Maximum,例如下面的50。
<ProgressBar Maximum="50" Value="{Binding Progress}" ..

我在我的XAML文件中该在哪里找到它?<Grid Name="myGrid"> <ListView ItemsSource="{Binding PersonList}"> <ListView.View> <GridView> <GridViewColumn Width="140" Header="GameName" DisplayMemberBinding="{Binding Name}"/> </GridView> </ListView.View> </ListView> </Grid> - Warpin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接