Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 从datatemplate绑定到viewmodel的属性_Wpf_Xaml_Mvvm - Fatal编程技术网

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>