【发布时间】:2015-05-26 09:55:40
【问题描述】:
我有一个 UserControl (MyCompositeView),我在其中添加了一些其他 UserControls (MyDetailView)。为了获得智能感知和重构能力,我在 CompositeView 中添加了 d:DataContext 中的 xaml。
为了在向 UserControl 添加新的 DataContext 时对其进行操作,我将 Visiblity 绑定到 RelativeSource(我的 CompositeViewModel)。不幸的是,与 MyCompositeViewModel 的匹配不适用于编辑器中的此绑定。
有没有办法让 Visual Studio 知道我的 DataContext 的 DataContext.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; }
}
【问题讨论】:
标签: wpf xaml mvvm user-controls blend