0
我一直在试图实现一个简单的值转换器我只是不知道为什么StringFormat没有被应用。正值变为绿色,负值变为红色,但不是得到预期结果(+15.74),最终得出:15.74747474。价值转换器不适用所需的字符串格式
我该如何得到这个工作?有人能给我一个我需要改变的想法吗?
XAML
<Window.Resources>
<local:PositiveConverter x:Key="PositiveConverter"/>
<Style TargetType="TextBlock" x:Key="NumericTextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}, Converter={StaticResource PositiveConverter}}" Value="True">
<Setter Property="Foreground" Value="Green"/>
<Setter Property="Text" Value="{Binding StringFormat='({0:+0.0})'}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}, Converter={StaticResource PositiveConverter}}" Value="False">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Text" Value="{Binding StringFormat='({0:-0.0})'}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid>
<StackPanel>
<TextBlock Text="{Binding ActualValue}" Style="{StaticResource NumericTextBlock}"/>
</StackPanel>
</Grid>
视图模型
namespace My.ViewModel
{
public class LocationViewModel : UserControl, INotifyPropertyChanged
{
public MyViewModel()
{
SetActualValue();
}
public DateTime mDate = DateTime.Now;
public DateTime MDate
{
get { return mDate; }
set
{
if (value == mDate)
{
return;
}
else
{
mDate = value;
OnPropertyChanged("MDate");
SetActualValue();
}
}
}
double _actualValue;
public double ActualValue
{
get { return _actualValue; }
set
{
_actualValue = value;
OnPropertyChanged("ActualValue");
}
}
ValueConverter
public class PositiveConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var number = 0.0;
var isNumber = double.TryParse(value.ToString(), out number);
return isNumber && number >= 0.0;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
谢谢克莱门斯这么清楚地解释这一点。现在我知道发生了什么。如果我从TextBlock中移除绑定,并将其保留,如下所示:( )我没有任何值显示。我错过了什么? –
iCosmin