我知道對此有很多答案,但在我的情況下它不起作用,看起來這是我正在努力解決的特定問題。
我的 XAML 端有這段代碼,但出于某種原因,這些文本塊顯示四舍五入到 2 個小數點的原始浮點值,而根據字串格式,它應該顯示最多 4 個小數點(如果有)。就我而言,我希望在工具提示 12.1864 中顯示我的 Y 值,但它顯示為 12.19。我怎樣才能讓它按照我想要的方式格式化?
<TextBlock>
<Run Text="X: "/>
<Run Text="{Binding XValue, StringFormat={}{0:#.####}, Mode=OneWay}"/>
</TextBlock>
<TextBlock>
<Run Text="Y: "/>
<Run Text="{Binding YValue, StringFormat={}{0:#.####}, Mode=OneWay}"/>
</TextBlock>

uj5u.com熱心網友回復:
感謝@KeithStein 的提示,我想通了。問題是系結屬性的型別,在我的情況下,它來自第三方庫并且是字串。我可以實作一個值轉換器,但我很幸運,第三個庫也有一個相同的浮點值選項,不是字串而是原始浮點型別。因此系結到這些并保持相同的 XAML 代碼對我來說效果很好。
uj5u.com熱心網友回復:
我檢查了你的代碼,它按預期作業正常,有 4 個小數點,

請在下面找到代碼
public string XValue { get; set; }
public string YValue { get; set; }
private void setXYValue()
{
XValue = "19.45678";
YValue = "20.12345";
OnPropertyChanged(nameof(XValue));
OnPropertyChanged(nameof(YValue));
}
<StackPanel Orientation="Vertical">
<TextBlock>
<Run Text="X: "/>
<Run Text="{Binding XValue, StringFormat={}{0:#.####}, Mode=OneWay}"/>
</TextBlock>
<TextBlock>
<Run Text="Y: "/>
<Run Text="{Binding YValue, StringFormat={}{0:#.####}, Mode=OneWay}"/>
</TextBlock>
</StackPanel>
uj5u.com熱心網友回復:
你的代碼對我來說很好用
<Window
x:Class="BindingFormatTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BindingFormatTest"
SizeToContent="WidthAndHeight">
<Window.DataContext>
<local:MainViewModel />
</Window.DataContext>
<StackPanel>
<TextBlock>
<Run Text="X: " />
<Run Text="{Binding XValue, StringFormat={}{0:#.####}, Mode=OneWay}" />
</TextBlock>
<TextBlock>
<Run Text="Y: " />
<Run Text="{Binding YValue, StringFormat={}{0:#.####}, Mode=OneWay}" />
</TextBlock>
</StackPanel>
</Window>
public class MainViewModel
{
public double XValue { get; } = 12.345678;
public double YValue { get; } = 23.456789;
}

嘗試使用諸如 WPFSnoop 之類的工具來檢查資料背景關系和值是否確實符合您的預期。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/318311.html
