WPF lier le titre de la fenêtre à la propriété
Je suis en train de lier la valeur d'une propriété (MyTitle) d'une classe (MainWindow) qui dérive de la Fenêtre. J'ai créé une dépendance de la propriété appelée MyTitleProperty, mis en œuvre l'interface INotifyPropertyChanged et modifié la méthode de jeu de MyTitle à l'appel de l'événement PropertyChanged, en passant "MyTitle" comme le nom de la propriété de paramètres. J'ai mis MyTitle "Titre" dans le constructeur, mais quand la fenêtre s'ouvre le titre est vide. Si j'ai mis un point d'arrêt sur l'événement Chargé alors MyTitle = "Title" mais cela.Title = "". C'est certainement quelque chose d'incroyablement évident que je ne l'ai pas remarqué. S'il vous plaît aider!
MainWindow.xaml
<Window
x:Class="WindowTitleBindingTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:this="clr-namespace:WindowTitleBindingTest"
Height="350"
Width="525"
Title="{Binding Path=MyTitle, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type this:MainWindow}}}"
Loaded="Window_Loaded">
<Grid>
</Grid>
</Window>
MainWindow.xaml.cs:
public partial class MainWindow : Window, INotifyPropertyChanged
{
public static readonly DependencyProperty MyTitleProperty = DependencyProperty.Register("MyTitle", typeof(String), typeof(MainWindow));
public String MyTitle
{
get { return (String)GetValue(MainWindow.MyTitleProperty); }
set
{
SetValue(MainWindow.MyTitleProperty, value);
OnPropertyChanged("MyTitle");
}
}
public MainWindow()
{
InitializeComponent();
MyTitle = "Title";
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
}
par rapport WPF nouveaux arrivants. J'ai fait un peu de liaison avant et n'a jamais eu à le définir. Suis-je suppposed le mettre? Que serais-je le régler?
Donc j'ai juste eu un coup de google et il semble que l'ajout de DataContext = ce; à mon constructeur résout mes problèmes. Merci Jeff!
Heureux de vous aider 🙂
OriginalL'auteur lace.john | 2012-03-07
Vous devez vous connecter pour publier un commentaire.
Ensuite, vous avez juste besoin dans le code XAML
Alors vous n'avez pas besoin de la dépendance de la propriété.
OriginalL'auteur Scroog1
Tout d'abord, vous n'avez pas besoin
INotifyPropertyChanged
si vous voulez juste pour se lier à unDependencyProperty
. ce serait redondant.Vous n'avez pas besoin de
DataContext
soit, c'est pour un ViewModel scénario. (regardez dans le modèle MVVM chaque fois que vous obtenez une chance).Maintenant votre déclaration de propriété de dépendance est incorrecte, il doit être:
Avis de la
UIPropertyMetadata
: il définit la valeur par défaut pour votre DP.Et enfin, dans votre XAML:
OriginalL'auteur Louis Kottmann
OriginalL'auteur Jonas