bet*_*ank 9 c# wpf xaml binding textblock
我尝试绑定Text属性TextBlock到我的属性,但文本不更新.
XAML
<Window x:Name="window" x:Class="Press.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
Title="Press analyzer" Height="350" Width="525" ContentRendered="Window_ContentRendered"
d:DataContext="{d:DesignData MainWindow}">
...
<StatusBar Name="StatusBar" Grid.Row="2" >
<TextBlock Name="StatusBarLabel" Text="{Binding Message}"/>
</StatusBar>
</Window>
Run Code Online (Sandbox Code Playgroud)
C#
public partial class MainWindow : Window, INotifyPropertyChanged
{
private string _message;
public string Message
{
private set
{
_message = value;
OnPropertyChanged("Message");
}
get
{
return _message;
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
Run Code Online (Sandbox Code Playgroud)
Roh*_*ats 14
DataContext在MainWindow的构造函数中将MainWindow 设置为自身来解析绑定:
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)
要么
如果未设置DataContext,则必须使用RelativeSource以下方法从XAML显式解析绑定:
<TextBlock Name="StatusBarLabel"
Text="{Binding Message, RelativeSource={RelativeSource
Mode=FindAncestor, AncestorType=Window}}"/>
Run Code Online (Sandbox Code Playgroud)
注 - 您始终可以检查Visual Studio的输出窗口是否存在任何绑定错误.
| 归档时间: |
|
| 查看次数: |
34283 次 |
| 最近记录: |