我有一個UserControl,它具有一些我希望綁定到XAML的屬性。UserControl DataBinding屬性不起作用
<UserControl x:Class="UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" DataContext="{RelativeSource Self}">
<UserControl.Background>
<ImageBrush ImageSource="{Binding BackgroundImage}" Stretch="UniformToFill" AlignmentX="Center" AlignmentY="Bottom"/>
</UserControl.Background>
<Grid Name="mainGrid">
<Label Canvas.ZIndex="-1" Foreground="Gray" Content="{Binding VersionNumber}" Height="28" HorizontalAlignment="Left" Name="versionLabel" VerticalAlignment="Bottom" />
</Grid>
</UserControl>
和代碼隱藏:
public partial class UserControl1 : UserControl, INotifyPropertyChanged
{
public string VersionNumber { private get; set; }
public ImageSource BackgroundImage { private get; set; }
public UserControl1()
{
InitializeComponent();
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
我有一個包含用戶控件窗口,像這樣
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SomeNameSpace"
Title="MainWindow"
MinHeight="400" MinWidth="400" >
<local:UserControl1 BackgroundImage="images\background.png" VersionNumber="10"/>
當然,實際的窗口不顯示任何東西,背景是空白的,Label.Content
爲空,但Autos窗口顯示我屬性設置正確,像這樣。
我一直在搞這個過去2個小時左右,我不知道怎麼回事。
編輯 我已經試過這
private string versionNumber;
public string VersionNumber { get { return this.versionNumber; }
set {
this.versionNumber = value;
OnPropertyChanged("VersionNumber");
}
}
,它仍然無法正常工作,在這種情況下,標籤不更新。
你缺少OnPropertyChange在屬性中設置(「yourpropertyname」)。 –
嘗試修改您的屬性二傳手公衆,並看看是否能解決問題 – har07
@ har07二傳手是公開的,它只是是私有的,吸氣。 @MihaiHantea見的更新,它仍然沒有即使到呼叫工作'OnPropertyChanged()' – ron975