C# 如何在WPF中与其他类型绑定?

C# 如何在WPF中与其他类型绑定?,c#,wpf,binding,mvvm,C#,Wpf,Binding,Mvvm,我正在和WPF玩一玩。这里的代码无法按我所希望的方式工作 <ListView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding FilesToUpload}"> <ListView.View> <GridView> <GridViewColumn Header="Fil

我正在和WPF玩一玩。这里的代码无法按我所希望的方式工作

<ListView Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding FilesToUpload}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Filename" DisplayMemberBinding="{Binding FileName}">
                    </GridViewColumn>
                    <GridViewColumn Header="Uploaded" DisplayMemberBinding="{Binding Uploaded}">
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
上面xaml示例中的GridView有两列。一个绑定到类FileInformation的属性FileName,另一个绑定到upload

问题是。Upload属性返回一个ProgressBar,但绑定到Upload的列的内容是一个字符串(我猜是ProgressBar的ToString()方法的returnvalue)


关于如何显示ProgressBar而不是字符串,有什么建议吗?

wpf不支持类型绑定,它只绑定ti属性。所以,如果需要绑定进度条,则需要将progressbase放置在普通列之外。还可以基于viewbase创建自定义视图

请参见下面链接上的示例


wpf不支持类型绑定,它只绑定ti属性。所以,如果需要绑定进度条,则需要将progressbase放置在普通列之外。还可以基于viewbase创建自定义视图

请参见下面链接上的示例

试试这个:

            <GridViewColumn Header="Progress">
                <GridViewColumn.CellTemplate>  
                    <DataTemplate>
                        <ProgressBar Maximum="100" Value="{Binding Uploaded.Value}"/>
                    </DataTemplate>
                 </GridViewColumn.CellTemplate>  
            </GridViewColumn>

试试这个:

            <GridViewColumn Header="Progress">
                <GridViewColumn.CellTemplate>  
                    <DataTemplate>
                        <ProgressBar Maximum="100" Value="{Binding Uploaded.Value}"/>
                    </DataTemplate>
                 </GridViewColumn.CellTemplate>  
            </GridViewColumn>

在绑定中将对象作为源从FrameworkElement继承是一个非常糟糕的想法

创建一个仅存储视图(xaml文件)中定义的ProgressBar数据的类

现在,您上传的属性应该返回ProgressBarViewModel的一个实例,您可以通过多种方式将该实例绑定到ProgressBar

我告诉你一个方法:

        <GridViewColumn Header="Uploaded">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <ProgressBar Value="{Binding Path=Uploaded.Value}"/>
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>


注意:在绑定中上载是FileInformation类的属性

将绑定中从FrameworkElement继承的对象作为源是一个非常糟糕的主意

创建一个仅存储视图(xaml文件)中定义的ProgressBar数据的类

现在,您上传的属性应该返回ProgressBarViewModel的一个实例,您可以通过多种方式将该实例绑定到ProgressBar

我告诉你一个方法:

        <GridViewColumn Header="Uploaded">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <ProgressBar Value="{Binding Path=Uploaded.Value}"/>
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>


注意:绑定中上载的是FileInformation类的属性

不要直接绑定到
进度条
。我目前无法访问代码,但您应该能够通过将单元格中显示的矩形宽度绑定到进度条的
值来重新创建进度条。不要直接绑定到
进度条。我目前无法访问代码,但您应该能够通过将单元格中显示的矩形宽度绑定到进度条的
值来重新创建进度条。