Dieses Beispiel zeigt eine Dateibrowsersteuerung, mit der der Pfad der ausgewählten Datei in einem Textfeld angezeigt wird und die Browserdateien ermöglicht.
<UserControl ... x:Class="Test.UserControls.FileBrowserControl"> <Grid ...> <TextBox Text="{Binding SelectedFile}" /> </Grid> </UserControl>
public class FileBrowserControl : UserControl { public ICommand BrowseCommand { get; set; } public static DependencyProperty SelectedFileProperty = DependencyProperty.Register("SelectedFile", ...); public string SelectedFile { get => (string)GetValue(SelectedFileProperty); set => SetValue(SelectedFileProperty, value); } public string Filter { get; set; } public FileBrowserControl() { ... this.DataContext = this; // 将 DataContext 设置为 FileBrowserControl 实例。 } private void Browse() { ... SelectedFile = dialog.FileName; // 更新 FileBrowserControl 实例的 SelectedFile 属性。 } }
<:> Frage:
<FileBrowserControl Filter="XSLT File (*.xsl)|*.xsl|All Files (*.*)|*.*" SelectedFile="{Binding SelectedFile}" />
Wenn Sie auf die Schaltfläche "Durchsuchen" klicken, wird das Textfeld in der Dateibrowsersteuerung korrekt aktualisiert, die Eigenschaft aus SelectedFile des übergeordneten Steuerelements ViewModel wird jedoch nicht festgelegt.
<本> Die Grundursache:
Das Problem besteht Dieser Konflikt mit der an das ViewModel gebundenen Vererbung, da er alle Datenbindungsattribute bindende Bindung unter Verwendung von VerwandtenSource zerstört.
<决> Lösung:
this.DataContext = this;
Um dieses Problem zu lösen
Dies kann sicherstellen, dass die Eigenschaft SelectedFile im SelectedFile -Attribut im übergeordneten Steuerteil gebunden ist, das den Rechenzontext der Kontrolle seines Vaters erbt. Durch Angeben von wird die Bindung die übergeordnete Nutzendrol -Ebene ermittelt, um das korrekte Attribut zu finden.
Durch die obige Änderung werden die
-attribute des übergeordneten ViewModel korrekt aktualisiert.<TextBox Text="{Binding SelectedFile, RelativeSource={RelativeSource AncestorType=UserControl}}" />
Das obige ist der detaillierte Inhalt vonWarum ist das 'SelectedFile' -Fotentum von My Parent Models nicht, wenn sie eine Abhängigkeitspflicht in einer UserControl verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!