0

我在这里缺少什么简单的东西?为什么我的副本不显示在屏幕上?

<Window x:Class="DeleteThis.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>

    <StackPanel>

        <TextBlock Text="{Binding Path=SomeCopy}" Height="35" Width="100" Margin="10"/>


    </StackPanel>
</Grid>

和我的代码隐藏。

    public partial class MainWindow : Window
{


    private string _someCopy;
    public string SomeCopy
    {
        get
        {
            return _someCopy;
        }

        set
        {
            _someCopy = value;
        }
    }

    public MainWindow()
    {

        InitializeComponent();

        SomeCopy = "why doesn't this display";
    }
}
4

3 回答 3

3

你从来没有设置过DataContextWindow。将您的 XAML 更改为此...

<TextBlock Text="{Binding}" Height="35" Width="100" Margin="10"/>

...并更改您的代码以添加该DataContext行...

    public MainWindow()
    {
        InitializeComponent();

        SomeCopy = "why doesn't this display";

        this.DataContext = SomeCopy;
    }

DependencyProperty您当前的问题与其他答案中提到的需要 a 无关。

于 2010-11-17T04:53:31.623 回答
1

WPF 永远不会发现属性已更改。

要修复它,您可以将属性转换为依赖属性

编辑:您还需要绑定到Window自身的属性,就像这样

<TextBlock Text="{Binding Path=SomeCopy, RelativeSource={RelativeSource Self}}" ... /> 
于 2010-11-17T04:24:21.870 回答
0

SLaks 的答案是正确的。但是手动创建依赖属性很烦人,所以我将您链接到我最喜欢的解决方案:自定义 PostSharpNotifyPropertyChangedAttribute,当与PostSharp结合使用时,可以将任何给定类的所有属性变成依赖属性。

于 2010-11-17T04:29:18.610 回答