gpt4 book ai didi

wpf - 是什么导致值转换器启动?

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

我正在根据列表框中的 SelectedIndex 是否 >= 0 设置控件的 IsEnabled 属性。我可以在后面的代码中执行此操作,但我想为此行为创建一个值转换器,因为这是我经常做的事情。

我创建了这个值转换器来处理任务并将其绑定(bind)到 IsEnabled 属性:

    [ValueConversion(typeof(Selector), typeof(bool))]
public class SelectorItemSelectedToBooleanConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || !(value is Selector))
return null;

var control = value as Selector;
return control.SelectedIndex >= 0;
}

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

#endregion
}

转换器仅在加载应用程序时调用一次。它不会在 SelectedIndex 更改时触发。

因此,我的问题是是什么导致值转换器启动?我假设是当绑定(bind)数据发生变化时,那么有没有办法强制转换器在不同情况下触发?我问的问题正确吗?

最佳答案

它不会触发,因为您已将它绑定(bind)到 Selector 本身,而不是 SelectorSelectedIndex 属性。 WPF 将监视您绑定(bind)到的路径中的每个属性,并在这些属性中的任何一个发生更改时更新值。 Selector 没有改变,SelectedIndex 是。

关于wpf - 是什么导致值转换器启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1234228/

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