Click here to Skip to main content
14,239,003 members
Rate this:
Please Sign up or sign in to vote.
Hi, maybe everybody can help me with Dependency Properties and a custom Control, this costum Control contians a grid, the grid shall be createsd progammatically- new columns with Buttons and external controls.
I have a dependency properties in this custom Control, but when i call the custom Control then the grid doesn't Change.

It seems the problem is that the grid is in another task? because nothing will created in the Grid, no column, no button. Waht do I wrong?

What I have tried:

my dependency property :
public static DependencyProperty Symbol1Name =
          DependencyProperty.Register("Sym1Name", typeof(string), typeof(UserControl1), new FrameworkPropertyMetadata("test", OnSymbol1PropertyChanged))


public string Sym1Name
       {
           get { return (string)this.GetValue(UserControl1.Symbol1Name); }
           set { this.SetValue(UserControl1.Symbol1Name, value); }
       }

The onChange Function
private static void OnSymbol1PropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
       {
           UserControl1 ak = dependencyObject as UserControl1;
           ak.OnPropertyChanged("Symbol1Name");
           ak.OnSymbol1PropertyChanged(e);

}

the function to Change. the Change function works in normal WPF App
:
private void OnSymbol1PropertyChanged(DependencyPropertyChangedEventArgs e)
        {
            try
            {
                

                
                change(Sym1Name, 0);
                

            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Posted
Updated 3-Apr-18 3:36am
Rate this:
Please Sign up or sign in to vote.

Solution 1

Not sure what your issue is since you do not have enough for me to tell you. However, you have a DependencyProperty, and for some reason have also implemented INotifyPropertyChanged. That should not be required. Should be able to do everything without the DependencyProperty and just implement INotifyPropertyChanged. That may make your problem easier to deal with since no longer have to deal with statics when you handle the change.
   
Rate this:
Please Sign up or sign in to vote.

Solution 2

Thanks I had a couple of problems with the logic of DependencyProperties. I found a short but good tutorial in web. After that I made a couple of changes and now it works:

public static readonly DependencyProperty Symbol1Name =
         DependencyProperty.Register("Sym1Name", typeof(string), typeof(UserControl1), new FrameworkPropertyMetadata(new string('t',10), OnSymbol1PropertyChanged));


public string Sym1Name
        {
            get { return (string) this.GetValue(Symbol1Name); }
            set { this.SetValue(Symbol1Name, value); }
        }


private static void OnSymbol1PropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs e)
        {
            UserControl1 ak = dependencyObject as UserControl1;            
            ak.InitName(e,0);
        }

This following functions creates a new Column with a couple of elements.
public void InitName(DependencyPropertyChangedEventArgs e, int column)
       {
           string test = e.NewValue.ToString();


           ColumnDefinition c1 = new ColumnDefinition();
           newColumnDefinition(c1, test);
           newBoarder(column);
           newGraphic(column, test);
           CreateDynamicExpander(column);
           if (!istGerade(column)) Grid1.ColumnDefinitions[column].Width = new GridLength(0);
           Grid1.HorizontalAlignment = HorizontalAlignment.Stretch;
           Grid1.VerticalAlignment = VerticalAlignment.Top;

       }
   

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100