gpt4 book ai didi

c# - 在没有 DataContext 的情况下,我的 View 如何知道它的 Presenter?

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:57 24 4
gpt4 key购买 nike

在 XAML 中,我将我所有的演示者显示为选项卡项:

<TabControl.ContentTemplate>
<DataTemplate DataType="x:Type views:SmartFormAreaPresenter">
<views:SmartFormAreaView/>
</DataTemplate>
</TabControl.ContentTemplate>

我注意到每个 View 都可以访问它各自的 Presenter 的属性,即使我没有明确说明View.DataContext = this 等

那么 DataContext 在哪里设置? DataTemplate 会神奇地发生这种情况吗?

public class SmartFormAreaPresenter : PresenterBase
{

#region ViewModelProperty: Header
private string _header;
public string Header
{
get
{
return _header;
}

set
{
_header = value;
OnPropertyChanged("Header");
}
}
#endregion

public SmartFormAreaPresenter(XElement areaXml)
{
Header = areaXml.Attribute("title").Value;

}
}

这是 View ,它正确显示 Header,这告诉我 DataContext 正在某处设置:

<UserControl x:Class="TestApp.Views.SmartFormAreaView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DockPanel LastChildFill="True">
<TextBlock Text="{Binding Header}"/>
</DockPanel>
</UserControl>

最佳答案

Where is the DataContext being set then? Does it happen magically with the DataTemplate?

是的。 DataTemplate 可视化树通过 DataContext

接收它代表的对象

关于c# - 在没有 DataContext 的情况下,我的 View 如何知道它的 Presenter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1231866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com