绑定资源

时间:2016-05-04 13:03:20

标签: wpf xaml mvvm

我有大约15个控件,我通过转换器将可见性属性绑定到bool。然而,在设计师中,他们现在经常被隐藏,我不希望他们成为。为了解决这个问题,我在编辑和调试之间手动更改了这一点,这是耗时且烦人的,必须一直这样做。我以为我可以定义一个资源来设置Visibility属性,当我编辑时我只是将它设置为Visible,在调试之前将其更改为绑定到我的bool。是的,我仍在不断改变一些事情,但这只是一件事,而不是15件左右。

我在考虑这样的事情:

<Window.Resources>
    <BooleanToVisibilityConverter x:Key=BoolToVisConverter"/>
    <Visibility x:Key="BoundVisibility">Visible</Visibility>
</Window.Resources>

然后在运行我的程序之前将其更改为:

<Window.Resources>
    <BooleanToVisibilityConverter x:Key=BoolToVisConverter"/>
    <Visibility x:Key="BoundVisibility">{Binding MyBool, Converter={StaticResource BoolToVisConverter}}</Visibility>
</Window.Resources>

然而,这不起作用。我试图做的是什么?或者是否有人有任何其他想法去做我想做的事情?

2 个答案:

答案 0 :(得分:0)

在创建VM的页面视图中使用以下逻辑:

 DataContext = new MainVm() { MyBool = DesignerProperties.GetIsInDesignMode(this)};

否则,您需要提供一个对象,该对象参与依赖属性系统(DependencyObject,例如控件或窗口)引用到您的VM并相应地调整MyBool

答案 1 :(得分:0)

也许不是通过编码的解决方案..

您可以定义这3个键,使用&#34;全部替换&#34; Visual Studio功能将使用的键值从VisibilityVisible更改为VisibilityHidden(例如,确保仅替换文档)。为了方便起见,为了防止更换资源,您可以在单独的文件中定义资源。

<Visibility x:Key="VisibilityVisible">Visible</Visibility>
<Visibility x:Key="VisibilityHidden">Hidden</Visibility>
<Visibility x:Key="VisibilityCollapse">Collapsed</Visibility>