- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个非常简单的 IMultiValueConverter,它只对两个值进行或运算。在下面的示例中,我想使用同样简单的 bool 反相器来反转第一个值。
<MultiBinding Converter="{StaticResource multiBoolToVis}">
<Binding Path="ConditionA" Converter="{StaticResource boolInverter}"/>
<Binding Path="ConditionB"/>
</MultiBinding>
和逆变器:
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
}
当我包含 boolInverter 时,MultiValueConverter 中的第一个值变为“DependencyProperty.UnsetValue”。当我不使用转换器时没有问题(当然,除了不是我想要的逻辑)。
我错过了什么吗?单步执行调试器显示 InverseBoolConverter 正确地反转了我传递给它的值,但该值随后没有被“发送”到 MultiValueConverter。
最佳答案
来自 MSDN:
UnsetValue 是一个标记值,用于 WPF 属性系统无法确定请求的 DependencyProperty 值的情况。使用 UnsetValue 而不是 null 引用(在 Visual Basic 中为 Nothing),因为 null 引用可以是有效的属性值,也可以是有效的(且经常使用的)DefaultValue。
这意味着以下情况之一:
ControlTemplate
或DataTemplate
),并且该值在加载时没有设置数据源。所以它会命中你的转换器两次,第一次是 UnsetValue,第二次是 bool 值;所以不用担心;Binding
不正确,这意味着 Binding 无法确定值,从而导致 UnsetValue。您可能会看到一条警告。此外,您不能像现在这样组合转换器。所以可能是这样。
把里面Binding里的Converter去掉,应该就修复了! :)
希望这对您有所帮助!
关于c# - 为什么在 MultiBinding 中转换值时会得到 DependencyProperty.UnsetValue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2811405/
我正在开发一个简单的 WPF 应用程序。目前,该应用程序仅管理 ComboBox 中的视频游戏列表。游戏列表与 XML 文件进行序列化。 当前被破坏的功能是能够从 ComboBox 中选择一个游戏,这
我创建了一个简单的转换器来连接我的 WPF 应用程序中四个文本框的文本。 这是转换器: public class FourString:IMultiValueConverter { publ
我有一个非常简单的 IMultiValueConverter,它只对两个值进行或运算。在下面的示例中,我想使用同样简单的 bool 反相器来反转第一个值。 和逆变器: publ
我的代码在启动时失败,因为 Multibinding 调用的 Converter 中的值数组 未填充正确的值,但值为 DependencyProperty.UnsetValue。 看看 Convert
我有一个自定义登录用户控件,它有一个普通的文本框和一个密码框。 Blend 拒绝与 PasswordBox 合作,称“DP.UnsetValue”对于 PasswordChar 属性无效。然而,该项目
我有以下多重绑定(bind): MyVisibilityDependencyProperty 是一个依赖属性。 MyBoolProperty 是一个
我是一名优秀的程序员,十分优秀!