gpt4 book ai didi

c# - 将 "MainView"过滤器中的 DataContext 设置为所有 "ChildView' s”

转载 作者:行者123 更新时间:2023-11-30 15:39:10 24 4
gpt4 key购买 nike

我想知道这是否是 .NET 的标准功能:在 ParentView 中设置 DataContext 时,它会过滤到所有 subview

假设您有 ParentView、ChildView1 和 ChildView2:

<UserControl x:Class="DXWPFApplication1.ParentView"
xmlns:view="clr-namespace:DXWPFApplication1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<view:ChildView1 x:Name="childView1"/>
</Grid>
</UserControl>

<UserControl x:Class="DXWPFApplication1.ChildView1"
xmlns:view="clr-namespace:DXWPFApplication1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<view:ChildView2 x:Name="childView2"/>
</Grid>
</UserControl>

ParentView 背后的代码:

public ParentView() 
{
InitializeComponent();

DataContext = "ViewModel"; //BreakPoint here

//
//When the first DataContext is set, all the DataContext's below are set as well
//

childView1.DataContext = DataContext;
childView1.childView2.DataContext = DataContext;
}

注意:先设置DataContext时断点

为什么我只设置了 ParentView 的 DataContext 而设置了所有 DataContext?

我能做些什么来防止这种情况发生?

最佳答案

这是标准行为,通常也是需要的。为防止出现这种情况,请在标记中将 DataContext 设置为 {x:Null}

关于c# - 将 "MainView"过滤器中的 DataContext 设置为所有 "ChildView' s”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10715857/

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