2013-12-14 2 views
1

У меня есть следующий класс:DataBind класса с сеткой Высота

public class Height 
{ 
    public GridLength GridHeight = new GridLength(200); 
} 

Я хочу, чтобы связать это поле с 1 Rows Высота от сетки:

<Grid.RowDefinitions> 
     <RowDefinition Height="{Binding Path=GridHeight, Mode=OneWay}"></RowDefinition> 
     <RowDefinition></RowDefinition> 
    </Grid.RowDefinitions> 

Я также объявлен DataContext :

public MainWindow() 
    { 
     DataContext = new Height(); 
    } 

Однако взаимодействие отсутствует. Я не могу понять, что случилось. Очень благодарен, если кто-то может объяснить, как привязать свойство класса к свойству Height.

ответ

1

Binding работает только со свойствами не с полями и обновлением только при реализации INotifyPropertyChanged интерфейса

так вот каждый раз, когда вы измените значение на GridHeight сетка обновляет его значение автоматически

public class Height:INotifyPropertyChanged 
{ 
    GridLength _gridheight = new GridLength(200); 
    public GridLength GridHeight 
      { 
        get{ 
          return _gridheight; 
         } 

        set{ 
          if(_gridheight==value) 
           return; 

          _gridheight=value; 
          NotifyPropertyChanged("GridHeight") 
         } 

     } 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void NotifyPropertyChanged(string propertyName = "") 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

} 
+0

Отлично! Теперь все работает безупречно! – LamaCoder

+0

да, это способ WPF !!! –

2

Вам необходимо сделать GridHeight недвижимостью, а не полем.

Возможно, вы захотите реализовать INotifyPropertyChanged для класса Height, если хотите его обновить.

public class Height 
{ 
    public Height() 
    { 
     this.GridHeight = new GridLength(200); 
    } 

    // Needs to be a property for data binding 
    public GridLength GridHeight { get; set; } 
} 
+0

Большое спасибо за упоминание INotifyPropertyChanged! – LamaCoder

Смежные вопросы