【问题标题】:WPF: Visibility binding, event = nullWPF:可见性绑定,事件 = 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}"
  • 抱歉复制了错误的代码。固定!

标签: wpf events binding visibility


【解决方案1】:

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

【讨论】:

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

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

【讨论】:

  • {Binding Path=MyProperty}{Binding MyProperty} 相同
  • 是的。我知道。在他的问题中,他说这是他的绑定:Visibility="{Binding Path=NoDevicesVisibility, Mode=OneWay},这与他定义的属性的签名不匹配。他在我发布答案后编辑了这个问题。第二个对他的问题的评论证实了这一点。
猜你喜欢
  • 1970-01-01
  • 2016-01-31
  • 2014-03-31
  • 2010-12-01
  • 2012-05-23
  • 2018-07-28
  • 2018-12-28
  • 2011-07-17
  • 1970-01-01
相关资源
最近更新 更多