DataContext和Binding在UWP中不起作用

时间:2018-07-29 12:20:56

标签: c# uwp

我是wpf-er第一次从事UWP工作。我发现VM中的DataContext和ResourceDictionary中的绑定在UWP中不起作用:

首先,我创建一个模型:

public class PersonModel :BindableBase
{
    private string _name = string.Empty;
    public string Name { get { return _name; } set { SetProperty(ref _name, value); } }
}

然后将这个模型放在MainPage.cs中:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        Person.Name = "Oh My Dog";       
    }

    public PersonModel Person { get; } = new PersonModel();
}

我在App.xaml中为ContentControl创建样式:

<Application.Resources>
    <ResourceDictionary>

        <!-- Person -->
        <Style x:Key="PersonStyle" TargetType="ContentControl">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ContentControl">
                        <TextBlock Text="{Binding Name, Mode=OneWay}"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Application.Resources>

然后将ContentControl放入MainPage.xaml:

<Grid>
    <ContentControl Style="{StaticResource PersonStyle}" DataContext="{Binding Person}"/>
</Grid>

但是它不起作用,MainPage.xaml上什么也没有显示。

是因为UWP不支持DataContext吗?我需要一个正确的例子,谢谢!

1 个答案:

答案 0 :(得分:1)

你失踪了

this.DataContext = this;

在MainPage.xaml.cs构造函数中:

public MainPage()
{
    this.InitializeComponent();

    Person = new PersonModel("Oh My Dog");
    this.DataContext = this;
}

我认为WPF也是一样,因此对UWP来说并不特殊。