Wpf 从datatemplate绑定到viewmodel的属性
我有以下资源字典:Wpf 从datatemplate绑定到viewmodel的属性,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我有以下资源字典: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <DataTemplate x:Key="Sample"> <StackPanel>
<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>
但我看不出来
这是我的主窗口.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。您还应该设置ContentControl的Content属性,如下所示 除此之外,您还应该通过
ResourceDictionary.MergedDictionaries
包含Dictionary.xaml,因为它允许有额外的“本地”资源
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<ContentControl ContentTemplate="{StaticResource Sample}" Content="{Binding}"/>
</Grid>
@Clemens也测试一下,那也不行。@Clemens肯定会的do@Clemens对不起,忘了复制那个部分。它也不起作用。这太奇怪了。但是没有错误消息。您确定资源字典的URL正确吗?@MikeT您将得到一个异常。您好,Clemens,您现在可以查看一下。添加了整个过程。我在想,如果我必须在一个“已加载的处理程序”中执行此操作。比如通知属性发生了变化。嗯,不知怎的,它不起作用了。真奇怪。我要再试试。我要发布代码。不知怎么的,这不管用。它仍然显示为空。正如您所看到的,现在我尝试直接将datacontext设置为我的视图(尽管这并不重要)。它不起作用。我想也许我需要通过一些事件来触发它。出于测试目的,我设置了一个新的wpf项目,但我可以再试一次
public partial class MainWindow : Window
{
public string Data { get; set; } = "Hello World";
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
}
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<ContentControl ContentTemplate="{StaticResource Sample}" Content="{Binding}"/>
</Grid>