C# 与单个窗口类绑定
这是一个奇怪的问题。我知道您不应该以这种方式构造任何真正的WPF应用程序 在MainWindow类中工作并仅使用MainWindow类如何将XAML元素绑定到CLR属性 这是我的XAMLC# 与单个窗口类绑定,c#,wpf,C#,Wpf,这是一个奇怪的问题。我知道您不应该以这种方式构造任何真正的WPF应用程序 在MainWindow类中工作并仅使用MainWindow类如何将XAML元素绑定到CLR属性 这是我的XAML <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mi
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBlock DockPanel.Dock ="Top" Height="50" Width="50"
Background ="AliceBlue" FontSize ="16" />
</Grid>
</Window>
和代码
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
string _myString = "hello world";
public string MyString
{
get { return _myString; }
}
public MainWindow()
{
InitializeComponent();
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propName)
{
if (this.PropertyChanged != null)
this.PropertyChanged(
this, new PropertyChangedEventArgs(propName));
}
}
}
命名空间WpfApplication1
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口,INotifyPropertyChanged
{
字符串_myString=“hello world”;
公共字符串MyString
{
获取{return\u myString;}
}
公共主窗口()
{
初始化组件();
}
公共事件属性更改事件处理程序属性更改;
void OnPropertyChanged(字符串propName)
{
if(this.PropertyChanged!=null)
这是我的财产改变了(
这是新的PropertyChangedEventArgs(propName));
}
}
}
所以我想在文本块中显示字符串。我认为这是一个简单的绑定,但我找不到正确的语法。谢谢您必须将窗口数据上下文设置为自身
<Window.DataContext>
<Binding RelativeSource="{RelativeSource Self}"/>
</Window.DataContext>
在这种情况下,您可以简单地执行以下操作:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
x:Name="MainWindow">
<Grid>
<TextBlock DockPanel.Dock ="Top" Height="50" Width="50"
Background ="AliceBlue" FontSize ="16"
Text="{Binding MyString, ElementName=MainWindow}" />
</Grid>
</Window>
此外,每当字符串发生更改时,您都可以通过调用OnPropertyChanged(“MyString”)获取要更新的绑定。谢谢。我做了更改,但出现了一个错误,错误是无法使名称MainWindow与封闭类型相同。所以我改成了x:Name=“MainWindow2”和ElementName=MainWindow2,它成功了。谢谢。从您的回答中,我了解到我还可以在代码中设置DataContext。公共主窗口(){InitializeComponent();this.DataContext=this;}
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
x:Name="MainWindow">
<Grid>
<TextBlock DockPanel.Dock ="Top" Height="50" Width="50"
Background ="AliceBlue" FontSize ="16"
Text="{Binding MyString, ElementName=MainWindow}" />
</Grid>
</Window>