【问题标题】:Binding Visibility without XAML没有 XAML 的绑定可见性
【发布时间】:2016-02-01 16:05:35
【问题描述】:

我对 WPF 非常陌生,尤其是对 DataBinding,我很难理解如何在没有 XAML 的情况下对其进行编码。如何在没有 XAML 的情况下将父可见性(父是 scrollViewer)绑定到其子可见性(子是网格)?这是我现在正在尝试做的事情:

{
//Code that creates grid
//Code that creates scrollViewer
    scrollViewer.Content = grid;
    LayoutRoot.Children.Add(scrollViewer); //adding it to the main window
//Creating binding
    Binding myBinding = new Binding("Vis");
    BooleanToVisibilityConverter c = new BooleanToVisibilityConverter();
    myBinding.Source = grid.Visibility;
    myBinding.Converter = c;
    myBinding.Mode = BindingMode.TwoWay;
    myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
    BindingOperations.SetBinding(scrollViewer, VisibilityProperty, myBinding);
}

我现在的“Vis”是什么:

public Visibility Vis
{
    get
    {
        return Visibility;
    }
    set
    {
        Visibility = value;
        OnPropertyChanged(Visibility);
    }
}

当然,现在的问题是OnPropertyChanged,它给我一个错误,我需要把DependencyPropertyChangedEventArgs放在里面,但我不知道怎么做。我不确定,我这样做是否正确(也许这可以简化?),或者我的方法可能根本不起作用,即使在修复了这个错误之后。我需要它没有 XAML,因为控件是动态创建的。

【问题讨论】:

  • 绑定的Source 是要观察的对象,路径指定将使用它的哪些属性。 new Binding("Visibility") { Source = grid } 应该可以解决问题(假设 gridGrid)。
  • “如何在没有 XAML 的情况下将父可见性(父级为 scrollViewer)绑定到其子级可见性(子级为网格)?” 您不需要。如果父项不可见,则子项无法可见。您想在这里实现什么目标?
  • @PieterWitvoet 感谢您的回答。尝试用myBinding.Source = new Binding("Visibility") { Source = grid } 替换myBinding.Source = grid.Visibility;,没有成功。 @ChrisF我通常在代码中与网格进行交互,因为我正在向其中添加子项。因此,每次我想让 scrollViewer 不可见时都需要添加一些行(而且我每次都需要做类似ScrollViewer scrollViewer = (ScrollViewer)LayoutRoot.FindName("scrollViewername") 的事情。
  • @HeideKnight:我展示的绑定应该替换 myBinding,而不是用作其来源。
  • @PieterWitvoet 现在所有scrollViewers 总是不可见的,如果我将grid 可见性设置为可见。另外,我已经删除了myBinding.Source = grid.Visibility; 行。

标签: c# wpf


【解决方案1】:

PieterWitvoet 提供的解决方案对我有用。我必须在创建时将 scrollViewer 可见性设置为 Visibility.Visible,但其他一切都很好。

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多