gpt4 book ai didi

wpf - 为 RelativeSource 绑定(bind)定义混合表达式 ViewModel 定义

转载 作者:行者123 更新时间:2023-12-03 10:27:50 25 4
gpt4 key购买 nike

我有一个 UserControl (MyCompositeView) 我在其中添加了一些其他 UserControls (我的详细信息 View )。为了获得智能感知和重构能力,我在 CompositeView 中添加了 d:DataContextxaml .

为了在将 UserControl 添加到新的 DataContext 时对其进行操作,我将 Visiblity 绑定(bind)到 RelativeSource(我的 CompositeViewModel)。不幸的是,匹配 MyCompositeViewModel不适用于编辑器中的此绑定(bind)。

有没有办法让 Visual Studio 知道我的 DataContextDataContext.DetailsIsVisible来自类型 MyCompositeViewModel ?

<UserControl 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Class="Example.MyCompositeView"
d:DataContext="{d:DesignInstance Type=MyCompositeViewModel}"
d:DesignHeight="300"
d:DesignWidth="300"
mc:Ignorable="d">

<Grid>
<detail:MyDetailView
DataContext="{Binding Path=DetailViewModel}"
Visibility="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}},
Path=DataContext.DetailsIsVisible,
Converter={StaticResource BooleanToVisibilty}}" />
</Grid>

</UserControl>

--
public class MyCompositeViewModel : IMyCompositeViewModel {

public bool DetailisVisible{get;set;}

public MyDetailViewModel DetailViewModel { get; }
}

最佳答案

尝试按元素名称绑定(bind):

<UserControl 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Class="Example.MyCompositeView"
x:Name="root"
d:DataContext="{d:DesignInstance Type=MyCompositeViewModel}"
d:DesignHeight="300"
d:DesignWidth="300"
mc:Ignorable="d">

<Grid>
<detail:MyDetailView
DataContext="{Binding Path=DetailViewModel}"
Visibility="{Binding ElementName="root"},
Path=DataContext.DetailsIsVisible,
Converter={StaticResource BooleanToVisibilty}}" />
</Grid>

</UserControl>

或翻转属性顺序:
<UserControl 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Class="Example.MyCompositeView"
d:DataContext="{d:DesignInstance Type=MyCompositeViewModel}"
d:DesignHeight="300"
d:DesignWidth="300"
mc:Ignorable="d">

<Grid>
<detail:MyDetailView
Visibility="{Binding DetailsIsVisible, Converter={StaticResource BooleanToVisibilty}}"
DataContext="{Binding DetailViewModel}"/>
</Grid>

</UserControl>

关于wpf - 为 RelativeSource 绑定(bind)定义混合表达式 ViewModel 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30455236/

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