标签: ivalueconverter

有没有办法在XAML中链接多个值转换器?

我有一种情况需要显示一个整数值,绑定到我的数据上下文中的属性,然后通过两次单独的转换:

  1. 反转范围内的值(例如,范围是1到100; datacontext中的值是90;用户看到的值是10)
  2. 将数字转换为字符串

我意识到我可以通过创建自己的转换器(实现IValueConverter)来完成这两个步骤.但是,我已经有一个单独的值转换器,只执行第一步,第二步由Int32Converter覆盖.

有没有办法在XAML中链接这两个现有的类而不必创建另一个聚合它们的类?

如果我需要澄清这些,请告诉我.:)

谢谢.

data-binding wpf xaml ivalueconverter

117
推荐指数
4
解决办法
4万
查看次数

如何将整数传递给ConverterParameter?

我想绑定到一个整数属性:

<RadioButton Content="None"
             IsChecked="{Binding MyProperty,
                         Converter={StaticResource IntToBoolConverter},
                         ConverterParameter=0}" />
Run Code Online (Sandbox Code Playgroud)

我的转换器是:

[ValueConversion(typeof(int), typeof(bool))]
public class IntToBoolConverter : IValueConverter
{
    public object Convert(object value, Type t, object parameter, CultureInfo culture)
    {
        return value.Equals(parameter);
    }

    public object ConvertBack(object value, Type t, object parameter, CultureInfo culture)
    {
        return value.Equals(false) ? DependencyProperty.UnsetValue : parameter;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我的转换器被调用时,参数是字符串.我需要它是一个整数.当然我可以解析字符串,但我必须这样做吗?

感谢konstantin的任何帮助

wpf binding ivalueconverter

88
推荐指数
3
解决办法
8万
查看次数

Moq +单元测试 - System.Reflection.TargetParameterCountException:参数计数不匹配

我想使用带有多参数函数的lambda,但是当我尝试调用该行时,Moq会在运行时抛出此异常mock.Object.Convert(value, null, null, null);.

System.Reflection.TargetParameterCountException: Parameter count mismatch

代码是:

var mock = new Mock<IValueConverter>();

mock.Setup(conv => conv.Convert(It.IsAny<Object>(), It.IsAny<Type>(),
    It.IsAny<Object>(), It.IsAny<CultureInfo>())).Returns((Int32 num) => num + 5);

var value = 5;
var expected = 10;
var actual = mock.Object.Convert(value, null, null, null);
Run Code Online (Sandbox Code Playgroud)

实施它的正确方法是什么?

c# wpf unit-testing moq ivalueconverter

67
推荐指数
2
解决办法
3万
查看次数

WPF BooleanToVisibilityConverter在false时转换为Hidden而不是Collapsed?

有没有办法使用现有的WPF BooleanToVisibilityConverter转换器但是将False值转换为Hidden而不是默认的Collapsed,或者我应该自己编写?我正在进行一个项目,在这个项目中,做这样简单的事情会带来巨大的开销(共享的东西进入一个单独的解决方案,而重建/签入/合并过程是一个过度生长的变异庞然大物的过程),所以我更愿意,如果我可以将参数传递给现有参数,而不是跳过刚才提到的箍.

.net data-binding wpf ivalueconverter

47
推荐指数
3
解决办法
6万
查看次数

Source = null的ImageSourceConverter错误

我正在将Image的Source属性绑定到字符串.此字符串可能为null,在这种情况下,我只是不想显示图像.但是,我在Debug输出中得到以下内容:

System.Windows.Data错误:23:无法将类型为"<null>"的"<null>"转换为使用默认转换为"en-AU"文化键入"System.Windows.Media.ImageSource"; 考虑使用Binding的Converter属性.NotSupportedException:'System.NotSupportedException:ImageSourceConverter无法转换(null).位于System.Windows.Media.ImageSourceConverter.ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,Object value)的System.ComponentModel.TypeConverter.GetConvertFromException(Object value)at MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o,Type destinationType,DependencyObject) targetElement,CultureInfo culture,Boolean isForward)'

我更喜欢这个没有显示,因为它只是噪音 - 是否有任何方法可以抑制它?

.net wpf exception-handling image ivalueconverter

47
推荐指数
3
解决办法
2万
查看次数

WPF ValueConverter - 不可转换价值的标准回报

在过去一年左右的时间里,我看到许多不同的价值转换器出于许多不同的目的,来自许多不同的作者.在我的脑海中突出的一件事是它们返回的"默认"值的广泛变化.例如;

  public class MyConverter: IValueConverter
  {
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
      // OK, we test for some undesirable, unconvertable situation, typically null...
      if (value == null)
      {
        // And here are a variety of 'defaults' that I have seen, these begin the most typical.
        return null;
        return DependencyProperty.UnsetValue;
        return Binding.DoNothing;
      }
        //...... other code.. whatever...
}}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,是否有一种"标准"方式来表明输入值无法转换?

c# wpf ivalueconverter valueconverter

43
推荐指数
3
解决办法
1万
查看次数

ValueConversionAttribute类的重点是什么?

这个属性有什么意义?添加它之后,我仍然需要对值对象进行强制转换.

[ValueConversion(sourceType: typeof(double), targetType: typeof(string))]
public class SpeedConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var speed = (double)value;
Run Code Online (Sandbox Code Playgroud)

它仅用于代码可读性吗?因为当我在xaml中将绑定的路径更改为String时,Visual Studio不会发出有关错误类型的警告,并且仅在转换时抛出异常,因此即使在编译时错误捕获也不会产生异常.我也可以将强制转换为字符串,尽管它与此属性冲突,但不会抛出任何警告.

c# wpf ivalueconverter

41
推荐指数
2
解决办法
7669
查看次数

在IValueConverter接口中使用ConvertBack方法有什么用?

接口中的ConvertBack方法有什么用IValueConverter

什么时候打电话?

或者什么是调用的顺序ConvertConvertBack方法.

我在这里提出问题是因为:我已经将一个codebehind属性绑定到TEXTBOX的TEXT属性并使用convertor该属性,

然后第一个Convert方法调用,当我改变TEXTTEXTBOX没有发生但只要我关闭窗体ConvertBack方法调用.

这是什么,没有任何规则来定义何时开火 ConvertBack方法?

注意:您可能会发现这可能与本网站上的其他问题重复...但在我撰写问题时,我发现在建议列表中没有使用任何问题.

.net c# wpf ivalueconverter

40
推荐指数
2
解决办法
2万
查看次数

多参数转换器

有谁知道如何在Windows Phone 7应用程序中使用带有多个参数的转换器?

提前致谢.

c# silverlight xaml ivalueconverter windows-phone-7

30
推荐指数
5
解决办法
3万
查看次数

为什么在MultiBinding中转换值时会得到DependencyProperty.UnsetValue?

我有一个非常简单的IMultiValueConverter,它只是OR的两个值.在下面的示例中,我想使用同样简单的布尔型逆变器反转第一个值.

<MultiBinding Converter="{StaticResource multiBoolToVis}">
    <Binding Path="ConditionA" Converter="{StaticResource boolInverter}"/>
    <Binding Path="ConditionB"/>
</MultiBinding>
Run Code Online (Sandbox Code Playgroud)

和逆变器:

public class BoolInverterConverter : IValueConverter
{
    #region IValueConverter Members
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is bool)
        {
            return !((bool)value);
        }
        return null;
    }
    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
    #endregion
}
Run Code Online (Sandbox Code Playgroud)

当我包含boolInverter时,MultiValueConverter中的第一个值变为"DependencyProperty.UnsetValue".当我不使用转换器时没有问题(当然,除了我不是针对的逻辑).

我错过了什么吗?单步执行调试器会显示InverseBoolConverter正在反转我传递的值,但该值不会被"发送"到MultiValueConverter.

c# wpf xaml dependency-properties ivalueconverter

28
推荐指数
2
解决办法
3万
查看次数