Kir*_*rst 5 wpf xaml visibility .net-3.5
将布尔属性绑定到View的Visibility属性时,我遇到了一个奇怪的问题.
我有一个'主'视图,包含一堆其他视图以及各种其他UIElements,包括按钮,文本框,网格,StackPanels和一些telerik控件.一些控件的可见性绑定到我的ViewModel上的布尔属性,这样当属性为正时会显示它们,而当它们为负时它们会被折叠.
<Border Visibility="{Binding IsSectionShown,
Converter={StaticResource BoolToVisibilityConverter}}" >
Run Code Online (Sandbox Code Playgroud)
这对我来说非常合适.显而易见我在IsSectionShownsetter中触发了通知事件,并且相应地调整了控件的Visibility.
现在我有一个需要调整其可见性的视图.明显的实施是
<vw:ActivityView DataContext="{Binding Activity}"
Visibility="{Binding IsPositive,
Converter={StaticResource BoolToVisibilityConverter}}" />
Run Code Online (Sandbox Code Playgroud)
不行!我的工作是将我的视图包装在StackPanel中并调整StackPanel的可见性 - 这样可以正常工作:
<StackPanel Visibility="{Binding IsPositive,
Converter={StaticResource BoolToVisibilityConverter}}">
<vw:ActivityView DataContext="{Binding Activity}" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
关于为什么会发生这种情况的任何想法?解决方法很好,但我想在我的理解中找出差距.
为了使这两者都起作用,该IsPositive属性必须存在于来自的Activity数据上下文的内部和上一层。Activity但这可能不是您想要的。相反,您可以使用类似这样的内容,以便可见性来自与应用于视图本身的数据上下文不同的数据上下文:
<vw:ActivityView DataContext="{Binding Activity}"
Visibility="{Binding IsPositive, ElementName=ParentElement,
Converter={StaticResource BoolToVisibilityConverter}}" />
Run Code Online (Sandbox Code Playgroud)
其中ParentElement是包含 的父元素vw:ActivityView。
| 归档时间: |
|
| 查看次数: |
1517 次 |
| 最近记录: |