C# 在WPF绑定中舍入一个值

C# 在WPF绑定中舍入一个值,c#,wpf,data-binding,C#,Wpf,Data Binding,我正在尝试实现一个进度条,上面有一个文本框,也显示进度%。然而,这个百分比是分数。是否可以通过绑定对数据集中返回的值进行舍入,还是必须通过代码隐藏进行舍入 <ProgressBar Grid.Row="2" Grid.ColumnSpan="2" Height="25" HorizontalAlignment="Stretch" Margin="5,5,5,2" Name="pbProgressIndex" VerticalAlignment="Top" Width="Auto" Val

我正在尝试实现一个进度条,上面有一个文本框,也显示进度%。然而,这个百分比是分数。是否可以通过绑定对数据集中返回的值进行舍入,还是必须通过代码隐藏进行舍入

<ProgressBar Grid.Row="2" Grid.ColumnSpan="2" Height="25" HorizontalAlignment="Stretch"  Margin="5,5,5,2" Name="pbProgressIndex" VerticalAlignment="Top" Width="Auto" Value="{Binding Path=ProgressIndex, Mode=OneWayToSource}" />
<TextBlock Grid.Row="2" Grid.ColumnSpan="2" Height="25" Name="txtProgressIndex" Text="{Binding Path=ProgressIndex, Mode=OneWayToSource}" Width="Auto" Foreground="Black" FontWeight="Bold" FontSize="14" FontFamily="Verdana" Padding="5" Margin="5,5,5,5" TextAlignment="Center" />

使用绑定的属性,例如:

{Binding Path=ProgressIndex, Mode=OneWayToSource, StringFormat=2N}

除了Femaref答案中的StringFormat之外,您还需要去掉
模式=OneWayToSource
设置。该模式用于将值从控件推送到绑定对象(如ViewModel),而不从代码接收对值的更新,这与您尝试执行的操作相反。您需要这些的单向模式,这恰好是TextBlock.Text的默认模式。默认情况下,ProgressBar.Value是双向使用的,在这种情况下仍然可以正常工作,但您也可以将其设置为
Mode=OneWay

StringFormat={}{0:#.00}

对我来说,它看起来更好;)

好电话。在回来查看答案(耶!复制和粘贴)之前,我捕捉到了它,但是为了注意细节,我使用了+1。最后,我修改了数据集,在它进入时对值进行取整,然后使用:Text=“{Binding Path=ProgressIndex,Mode=OneWay,StringFormat={}{0}%}”字符串格式应该是“N2”,格式说明符(字母)需要先来。请参见标准格式字符串上的.NET文档: