我刚刚接触WPF。
我有一个wpf应用程序,我只有一个停靠面板和内部停靠面板我有一个文本块。
我想将textblock的text属性绑定到我的自定义对象的属性,但是“不起作用。”
我想我在这里遗漏了一些东西,但不知道是什么。
以下是代码段。
<TextBlock Text="{Binding Source=myDataSource, Path=ColorName}"/>
</DockPanel>
我的自定义课程。
class MyData
{
public string ColorName { get; set; }
}
和主窗口构造函数..
public partial class MainWindow : Window
{
MyData myDataSource;
public MainWindow()
{
InitializeComponent();
myDataSource = new MyData { ColorName = "Red" };
}
}
答案 0 :(得分:1)
myDataSource需要get和set。您还需要为窗口设置dataContext,因此它应该是 -
public partial class MainWindow : Window
{
public MyData MyDataSource { get; set; }
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
MyDataSource = new MyData { ColorName = "Red" };
}
}
public class MyData
{
public string ColorName { get; set; }
}
和xaml代码应为 -
<TextBlock Text="{Binding MyDataSource.ColorName}"/>
编辑抱歉错了,我已经改为正确的代码
答案 1 :(得分:0)
InitializeComponent()
绑定
可能不会更新,具体取决于您的绑定。INotifyPropertyChanged
或工作
具有依赖属性。答案 2 :(得分:0)
如果您只想绑定到MyData
,请不要将窗口设置为自己的DataContext
。 Istead,设置您绑定的数据。这样就更清楚了什么是数据,什么是视图。
此外,丢失Source
Binding
,您通常不需要它。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new MyData { ColorName = "Red" };
}
}
public class MyData
{
public string ColorName { get; set; }
}
XAML:
<TextBlock Text="{Binding ColorName}"/>