C# 如何在XAML中设置属性的属性?

C# 如何在XAML中设置属性的属性?,c#,wpf,xaml,data-binding,mvvm,C#,Wpf,Xaml,Data Binding,Mvvm,我有一个用户控件作为我的视图(名为MyView),它的数据上下文设置为我的视图模型的实例(类型为MyViewModel)。 我在视图的代码中有一个只读属性(即MVVM Light代码段),如下所示: public MyViewModel Vm { get { return (MyViewModel) DataContext; } } MyViewModel有一个名为Title的字符串类型属性,我想通过XAML对其进行更改,因为MyView被用作列表框的ItemTemplate <

我有一个用户控件作为我的视图(名为
MyView
),它的数据上下文设置为我的视图模型的实例(类型为
MyViewModel
)。
我在视图的代码中有一个只读属性(即MVVM Light代码段),如下所示:

public MyViewModel Vm
{
    get { return (MyViewModel) DataContext; }
}
MyViewModel
有一个名为
Title
的字符串类型属性,我想通过XAML对其进行更改,因为
MyView
被用作
列表框的
ItemTemplate

<ListBox ItemsSource="{Binding MyViewModelCollection}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Controls:MyView /> <!-- How do I set Vm.Title property here? -->
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我该怎么做?

或者有更好的方法吗?

您能否在
MyView
中创建一个反映视图模型的属性

public string Title 
{ 
    get { return ((MyViewModel) DataContext).Title; } 
    set { ((MyViewModel) DataContext).Title = value; }
}
然后写:

<Controls:MyView Title="MyTitle" />


如果要绑定标题,必须使其成为依赖项属性而不是常规属性。

您的方法是反向的。如果您已经有一个VM集合,为什么不在该集合的项中操作这样的属性?@HighCore是否愿意进一步解释?我不完全明白。你的列表框项目来自哪里?
MyViewModel
的集合,对吗那么,为什么您坚持要更改视图中的数据,而不是视图模型本身中的数据?你似乎误解了这个问题的一些核心概念MVVM@HighCore哦我以前也试过,但效果不太好,所以一些答案让我觉得这是一个更好的选择。这不对吗?数据就是数据。UI就是UI。UI显示由ViewModel和Model公开和提供的数据,而不是相反。