/ / Die Eigenschaft nullable int wird zu einem internen Feld in der öffentlichen Klasse, das keine Klasse [closed] - c # erbt. Eigenschaften, nullable

Nullable int-Eigenschaft wendet sich an internes Feld in der öffentlichen Klasse, die nicht von einer Klasse erbt [geschlossen] - c #, properties, nullable

Unternehmensklasse:

public class Company
{
public int CompanyId { get; set; }
public int? CountryId { get; set; }
}

Und ich bekomme folgende Ausgabe im Debugger:

Eigenschaft wird in Feld

Ich brauche diesen Wert, der an XAML gebunden ist, und ich nehme an, dass dies der Grund ist, warum value nicht bindet.

Könnte jemand dieses Verhalten erklären?

Antworten:

2 für die Antwort № 1

Wenn Sie sich an eine Eigenschaft mit Nullwert binden, sind Sie für die Eigenschaft selbst oder für die Eigenschaft verbindlich.

Binden Sie an "myCompany.CompanyId.Value" anstelle von "myCompany.CompanyId". Nullable-Felder haben zusätzliche Eigenschaften für "HasValue" und "Value" und können nicht direkt gebunden werden.

Auch wenn Sie versuchen, sie an ein Textfeld zu binden oder zu verwendenAls allgemeiner Parameter müssen Sie eine Existenzprüfung (über HasValue) durchführen und dann den tatsächlichen zugrunde liegenden Wert (über Wert) verarbeiten. Wenn also die CountryId nicht initialisiert wird, wird der Wert auf "null" gesetzt, und Ihre Bindung muss ordnungsgemäß verarbeitet werden. Die XAML-Bindung kann problemlos mit Null verarbeitet werden.