WPF字符串到双转换器
作者:互联网
有人能给我一些暗示我做错了什么吗?
所以我在xaml中有一个textblock
<TextBlock>
<TextBlock.Text>
<Binding Source="signal_graph" Path="GraphPenWidth" Mode="TwoWay" Converter="{StaticResource string_to_double_converter}" />
</TextBlock.Text>
</TextBlock>
附加到signal_graph的GraphPenWidth属性(类型为double).转换器在应用程序的资源中被声明为资源,如下所示:
public class StringToDoubleValueConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
double num;
string strvalue = value as string;
if (double.TryParse(strvalue, out num))
{
return num;
}
return DependencyProperty.UnsetValue;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return value.ToString();
}
}
我认为将会发生的是,在启动时,默认构造函数选择的属性值将传播到文本块,然后当文本块离开焦点时,将来的文本块更改将更新图形.但是,相反,初始加载不会更新文本块的文本,并且更改文本块的文本不会影响图形的笔宽值.
随时要求进一步澄清.
解决方法:
为此,您不需要转换器,请在属性上使用.ToString()方法.
public string GraphPenWidthValue { get { return this.GraphPenWidth.ToString(); } }
无论如何,这是一个标准的字符串值转换器:
[ValueConversion(typeof(object), typeof(string))]
public class StringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value == null ? null : value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
标签:ivalueconverter,wpf,c 来源: https://codeday.me/bug/20191030/1970366.html