我有以下资源字典:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataTemplate x:Key="Sample">
<StackPanel>
<TextBlock Text="{Binding Data}" />
</StackPanel>
</DataTemplate>
</ResourceDictionary>
在我的主窗口中:
<Window.Resources>
<ResourceDictionary Source="Dictionary.xaml" />
</Window.Resources>
<Grid>
<ContentControl ContentTemplate="{StaticResource Sample}"/>
</Grid>
现在我该如何使绑定工作?我的窗口已经将datacontext设置为我的viewmodel,所以我认为它会工作,但没有。我没有看到它应用文本。
我的viewmodel有一个普通的属性:
public string Data { get; set; } = "Hello World";
但我没有看到它。
这是我的mainwindow.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
}
现在我的viewmodel:
public class ViewModel {
public string Data {get; set;} = "Hello World";
}
为了演示目的,整个代码保持非常简约。
修改:
它仍然无法正常工作,这次是为了简单起见:
public partial class MainWindow : Window
{
public string Data { get; set; } = "Hello World";
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
}
不工作,我不明白。它没有意义吗?我已经像克莱门斯所解释的那样设置了xaml。
答案 0 :(得分:1)
您还应该设置ContentControl的Content属性,如下所示。
除此之外,你应该通过ResourceDictionary.MergedDictionaries
包含Dictionary.xaml,因为它允许有额外的&#34; local&#34;资源。
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<ContentControl ContentTemplate="{StaticResource Sample}" Content="{Binding}"/>
</Grid>