1 Jak powiązać wartość WPF z klasą w klasie

pytanie utworzone w Tue, Apr 9, 2019 12:00 AM

Próbuję powiązać wartość z klasą w klasie.

<Textbox Text="{Binding Path=Height}" />

public partial class Test : Page
{
    Builder builder = new Builder();
    public Test()
    {
        InitializeComponent();
        DataContext = builder;
    }
}

public class Builder
{
    public AnotherClass Height { get; set; }
}

public class AnotherClass
{
    public String Feet { get; set; }
    public String Inches { get; set; }
}

Pomyślałbym, że powiązanie z Height.Feet zaktualizuje wartość w obiekcie, ale obiekt zostanie ustawiony na wartość null.

    
0
  1. Powinieneś napisać {Binding Path=Height.Feet} lub {Binding Path=Height.Inches}. Nie ma wbudowanej automatycznej konwersji z łańcucha na YourClass. Możesz jednak napisać konwerter wiążący, który dokonuje odpowiedniej konwersji. Ogólnie rzecz biorąc, obiekt modelu widoku (źródło powiązania) nie powinien przechowywać tej samej wartości w różnych jednostkach. Zapisz pojedynczą wartość w jednostkach SI i wykonaj konwersję w interfejsie użytkownika.
    2019-04-09 11: 18: 53Z
  2. Próbowałem powiązać z Height.Feet, ale to nie zadziałało.
    2019-04-09 11: 23: 05Z
  3. Z pewnością dlatego, że nie zainicjowałeś właściwości Height.
    2019-04-09 11: 23: 59Z
1 odpowiedzi                              1                         

Tworzysz egzemplarz Buildera, ale nie inicjujesz jego właściwości Height. Dlatego właściwość źródła powiązania ma wartość null.

Może wyglądać jak

public AnotherClass Height { get; set; } = new AnotherClass();

Zainicjuj także obie właściwości AnotherClass, ponieważ String domyślnie ma wartość null.

    
2
2019-04-09 14: 57: 35Z
  1. Musisz także zainicjować właściwości stóp i cali. Czy stopy i cale nie powinny być numeryczne jak int ani podwójne?
    2019-04-09 13: 56: 01Z
źródło umieszczone tutaj