gpt4 book ai didi

c# - WPF - ConverterParameter 中的动态值

转载 作者:行者123 更新时间:2023-12-01 22:36:25 25 4
gpt4 key购买 nike

出现了 UI 中的复选框需要绑定(bind)到数字参数的情况 - 实际上,某些值使复选框为“true”,否则为“false”。

最简单的方法似乎是使用转换器:

[ValueConversion(typeof(int), typeof(bool?))]
public class TypeToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (targetType != typeof(bool?))
throw new InvalidOperationException("The target must be a bool");

if( (value < 3)
{
return true;
}
return false;
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplmentedExpection();
}
}

然后在 XAML 中:

<CheckBox IsChecked="{Binding Path=Type.TypeID, Converter={StaticResource TypeConverter}}" />

它在使用 Convert 时非常有效,但在使用 ConvertBack 时完全失败,因为它需要知道数值是什么(它取决于其他 UI 元素)才能知道要返回什么数字 - 实际上它需要访问绑定(bind)对象。

我假设我可以使用 ConverterParameter 来完成此操作,但从外观上看,您无法将值绑定(bind)到此属性。

有办法解决这个问题吗?

编辑:我已经通过弄乱原始绑定(bind)解决了这个问题,并且摆脱了它,因为取消选中我想要做的就是删除该项目。但我将保留它,因为它似乎是一个有效的问题,而且我对可能的解决方案很好奇。

最佳答案

为什么不直接绑定(bind)到某个东西上并在你绑定(bind)的东西中完成工作,例如 View 模型?它可能会更干净、更快。

转换器在理论上是不错的,但在构建了许多大型 WPF 项目之后,由于上述原因,我几乎从不使用它们。当然,你可以让它做你想做的事,但有什么意义呢?您对这些转化发生的方式和时间的控制要少得多。

关于c# - WPF - ConverterParameter 中的动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22505743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com