【问题标题】:UWP Binding not WorkingUWP 绑定不起作用
【发布时间】:2018-03-15 15:51:28
【问题描述】:

我有一个“A”类和“VisibilityStateProvider”类,每当 A 类的任何键在那时发生变化时,我都会调用 VisibilityStateProvider 的 NotifyVisibilityChanged 但 GetVisibilityValue(key) 方法永远不会被调用。并且可见性不会在 UI 上得到更新。

提前感谢您的帮助!

     public class A:  IDictionary<string, object>, INotifyPropertyChanged

                {
                    public VisibilityStateProvider VisibilityProvider { get; set; }

                    public A()
                    {
                        VisibilityProvider = new VisibilityStateProvider(this);
                    }


                }
             public class VisibilityStateProvider : IPropertyStateProvider
                {
                    private A A;

                    public VisibilityStateProvider(A a)
                    {
                        A= a;
                    }
                 public bool this[string key]
                    {
                    get
                    {
                        return GetVisibilityValue(key);
                    }
                }
           private bool GetVisibilityValue(string key)
                  {
                     //returns true or false on basis of some condition.
                   }
         public void NotifyVisibilityChanged(string key)
            {
                var a= $"Item[{key}]";

                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(a));
            }
            }
             public interface IPropertyStateProvider : INotifyPropertyChanged
                {
                    bool this[string key] { get;}
                }


            //xaml
            <TextBox Text="{Binding A[mf_number1], Mode=TwoWay}" Visibility="{Binding A.VisibilityProvider[mf_number1],Converter={StaticResource BoolToVisibilityConverter}}" ></TextBox >

【问题讨论】:

    标签: c# xaml data-binding uwp uwp-xaml


    【解决方案1】:

    我没有检查你的完整代码,所以在这里我将分享一个你需要知道的事情作为开始。在您的代码中,永远不会调用 GetVisibilityValue(key),因为您没有以正确的方式调用它。试试下面的代码作为测试:

     public A()
        {
            VisibilityProvider = new VisibilityStateProvider(this);
            var something = VisibilityProvider["test"];
        }
    

    只有当你像第二行一样调用时,才可以调用下面的代码:

                get
                    {
                        return GetVisibilityValue(key);
                    }
    

    【讨论】:

    • 以这种方式调用 GetVisibilityValue 方法,但我希望通过 xaml 绑定调用它
    猜你喜欢
    • 2019-01-28
    • 1970-01-01
    • 2017-02-15
    • 2016-11-18
    • 2019-01-24
    • 2019-01-05
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    相关资源
    最近更新 更多