我是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吗?我需要一个正确的例子,谢谢!
答案 0 :(得分:1)
你失踪了
this.DataContext = this;
在MainPage.xaml.cs构造函数中:
public MainPage()
{
this.InitializeComponent();
Person = new PersonModel("Oh My Dog");
this.DataContext = this;
}
我认为WPF也是一样,因此对UWP来说并不特殊。