2017-10-04 52 views
0

我有一个类“A”和类“VisibilityStateProvider”每当任何关键的类A改变,那时我调用VisibilityStateProvider的NotifyVisibilityChanged但GetVisibilityValue(key)方法永远不会调用。可见性不会在UI上得到更新。UWP绑定不工作

感谢您的帮助!

 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 > 

回答

0

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

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

这里只有当你调用类的第二行,那么你下面的代码可以被称为:

  get 
       { 
        return GetVisibilityValue(key); 
       } 
+0

做这样GetVisibilityValue方法被调用,但我希望通过xaml绑定来调用它 –