【问题标题】:Why binding with converter changes properties not bound to on GUI?为什么与转换器绑定会更改未绑定到 GUI 上的属性?
【发布时间】:2014-02-02 06:59:58
【问题描述】:

我将我的文本框绑定到属性(仅文本框)并使用了只返回相反布尔值的转换器。

XAML

<TextBox Height="23" HorizontalAlignment="Left" Margin="13,41,0,0" Text="{Binding Path=CurrentProfile.profileName}"  IsEnabled="{Binding Path=CurrentProfile.isPredefined, Converter={StaticResource PredefinedToControlEnabled}}" VerticalAlignment="Top" Width="247" Grid.ColumnSpan="2" TabIndex="1" />

转换器

public class PredefinedToControlEnabled: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var isPredefined = (bool)value;
        return !isPredefined;
    }

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

当属性值 isPredefined 为 true 时,TextBox 的 IsEnabled 属性正确设置为 false。当 isPredefined 为 false 时,转换器返回 false 并且 GUI 上的所有控件将 IsEnabled 属性设置为 false,这意味着应用程序不再可用(它自然地在后台工作)。为什么会这样?

它是什么样子的:

【问题讨论】:

    标签: c# wpf binding ivalueconverter


    【解决方案1】:

    找到,

    VS 自动在窗口属性中添加一行

    IsEnabled="{Binding Path=CurrentProfile.isPredefined}"
    

    但问题仍然是,如何?

    【讨论】:

    • 您是否尝试将UpdateSourceTrigger=PropertyChanged 添加到您的 IsEnabled-Property 中? IsEnabled="{Binding Path=CurrentProfile.isPredefined, Converter={StaticResource PredefinedToControlEnabled}, UpdateSourceTrigger=PropertyChanged}"
    • 是的,找到了修复。属性被绑定到 IsPredefined 覆盖,这在一半情况下有效。然后进行窗口的常规设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多