Wpf 绑定到资源

Wpf 绑定到资源,wpf,xaml,mvvm,Wpf,Xaml,Mvvm,我有大约15个控件,通过转换器将的可见性属性绑定到bool。然而,在设计师中,它们现在一直被隐藏,我不希望它们被隐藏。为了解决这个问题,我在编辑和调试之间手动进行了更改,这是一项耗时且烦人的工作。我想我可以定义一个资源来设置可见性属性,当我编辑时,我只需将其设置为可见,在调试之前将其更改为绑定到我的bool。是的,我仍然在不断地改变一些东西,但这只是一件事,而不是15件左右 我在想这样的事情: <Window.Resources> <BooleanToVisibilit

我有大约15个控件,通过转换器将的可见性属性绑定到bool。然而,在设计师中,它们现在一直被隐藏,我不希望它们被隐藏。为了解决这个问题,我在编辑和调试之间手动进行了更改,这是一项耗时且烦人的工作。我想我可以定义一个资源来设置可见性属性,当我编辑时,我只需将其设置为可见,在调试之前将其更改为绑定到我的bool。是的,我仍然在不断地改变一些东西,但这只是一件事,而不是15件左右

我在想这样的事情:

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

{Binding MyBool,Converter={StaticResource BoolToVisConverter}

然而,这不起作用。我想做的事可能吗?或者有人有任何其他想法来完成我试图做的事情吗?

在创建虚拟机的页面视图中,使用以下逻辑:

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

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

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

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

<Visibility x:Key="VisibilityVisible">Visible</Visibility>
<Visibility x:Key="VisibilityHidden">Hidden</Visibility>
<Visibility x:Key="VisibilityCollapse">Collapsed</Visibility>
可见
隐藏的
崩溃

窗口是否具有设计时数据上下文或未设置?是的,对于包含MyBoolAre的ViewModel,您反对只设置
回退值
?像
{Binding MyBool,Converter={StaticResource BoolToVisConverter},FallbackValue='Visible'}
不知道有这样的事情!我试试看,谢谢!遗憾的是,它没有起作用,不过谢谢你的建议,至少你让我意识到了
后备价值
<Visibility x:Key="VisibilityVisible">Visible</Visibility>
<Visibility x:Key="VisibilityHidden">Hidden</Visibility>
<Visibility x:Key="VisibilityCollapse">Collapsed</Visibility>