WPF:可见性绑定,事件 = null

Posted

技术标签:

【中文标题】WPF:可见性绑定,事件 = null【英文标题】:WPF: Visibility binding, event = null 【发布时间】:2011-08-31 23:04:35 【问题描述】:

我有以下代码:

    public event EventHandler LoadingControlVisibilityChanged;
    public Visibility LoadingControlVisibility
    
        get  return _LoadingControlVisibility; 
        set
        
            _LoadingControlVisibility = value;
            if (LoadingControlVisibilityChanged != null)
                LoadingControlVisibilityChanged(this, EventArgs.Empty);
        
    

<Label x:Name="loading" Visibility="Binding Path=LoadingControlVisibility, Mode=OneWay" Content="No Devices Detected!" FontFamily="DynamicResource AppFont" HorizontalAlignment="Left" Margin="110,0,0,0" FontSize="21.333" />

第一次绑定工作,但在我更改 LoadingControlVisibility 后没有任何反应,调试后我注意到 event = null。请帮我解决这个问题。

我的文本属性没有问题:

    public event EventHandler UUidChanged;
    public string UUid
    
        get  return _uuid; 
        set
        
            _uuid = value;
            if (UUidChanged != null) UUidChanged(this, EventArgs.Empty);
        
    
<TextBox Text="Binding Path=UUid, Mode=OneWay" Margin="122.48,11.26,9,0" TextWrapping="Wrap" VerticalAlignment="Top" FontSize="DynamicResource MediumFontSize" FontFamily="DynamicResource AppFont" Template="DynamicResource TxtBoxTemplate" Height="25" >

为什么不一样?

【问题讨论】:

我不确定我是否完全理解您在这里的目的。您正在绑定到一个名为 NoDevicesVisibility 的属性,但您并未在任何地方操作该属性。 另外,您的属性称为 LoadingControlVisibility,但您的 XAML 绑定到 Visibility ... Visibility="Binding Path=NoDevicesVisibility, Mode=OneWay" 抱歉复制了错误的代码。固定! 【参考方案1】:

Binding 语句不会查找您定义的事件。您必须改为实现INotifyPropertyChanged。

【讨论】:

文本属性的工作方式是这样的。为什么能见度不同? @Mark - 您必须发布有关“文本属性”的更多信息。我不确定你指的是什么。 @Mark - 您没有展示如何在绑定中使用该属性,并且复制了错误的事件 :-) 我现在看到了 @CodeNaked - Label.DataContext = SUS; // sus 包含 uuid。抱歉有很多活动 @Mark - 我用你上面的代码尝试了一个测试,当我更改 UUid 时它没有更新。您的标签和文本框是否在同一个地方使用?尝试创建一个非常简单的示例并尝试重现您所看到的内容。 Binding 不会利用您尚未使用的事件,但没有足够的信息来解释 TextBox “工作”的原因。【参考方案2】:

我不太确定你想要完成什么。我的理解是,您正在尝试将标签的可见性绑定到在另一个类中定义的名为 LoadingControlVisibility 的属性。如果是这种情况,那么您的绑定路径是错误的。您的绑定应如下所示:Visibility="Binding LoadingControlVisibility"

【讨论】:

Binding Path=MyPropertyBinding MyProperty 相同 是的。我知道。在他的问题中,他说这是他的绑定:Visibility="Binding Path=NoDevicesVisibility, Mode=OneWay,这与他定义的属性的签名不匹配。他在我发布答案后编辑了这个问题。第二个对他的问题的评论证实了这一点。

以上是关于WPF:可见性绑定,事件 = null的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WPF 中的代码绑定 DataGridTextColumn 的可见性属性?

WPF - 将 UserControl 可见性绑定到属性

WPF:通过字符串内容绑定可见性

WPF 在编辑时设置默认可见性值

WPF 触发器绑定:将枚举值绑定到可见性的最佳方法是啥?

WPF ContextMenu:MenuItem 图标可见性绑定错误