【发布时间】:2017-12-08 02:40:59
【问题描述】:
我的代码:
<Window ...
Title="Notification" Height="90" Width="300" ResizeMode="NoResize" WindowStyle="None" DataContext="{Binding Notification, Source={StaticResource Locator}}" Opacity="{Binding TransitionOpacity}" Left="{Binding LeftMargin}" Top="{Binding TopMargin}" Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisibility}}">
<Window.Resources>
<local:BoolToVisibleOrHidden x:Key="BoolToVisibility" />
</Window.Resources>
<Grid Background="#FF3C4759">
...
</Window>
编译时出现异常 System.Windows.Markup.XamlParseException 并在将代码更改为
<Window ...
Title="Notification" Height="90" Width="300" ResizeMode="NoResize" WindowStyle="None" DataContext="{Binding Notification, Source={StaticResource Locator}}" Opacity="{Binding TransitionOpacity}" Left="{Binding LeftMargin}" Top="{Binding TopMargin}" >
<Window.Resources>
<local:BoolToVisibleOrHidden x:Key="BoolToVisibility" />
</Window.Resources>
<Grid Background="#FF3C4759" Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisibility}}">
...
</Window>
它有效,但我想设置窗口可见性而不是网格。
【问题讨论】:
-
您不能将数据绑定添加到静态资源。要么在资源中使用触发器来更改样式,要么不将网格声明为资源,而将其声明为普通元素并使用绑定。
-
“我想设置窗口可见性”是什么意思?是否要根据
IsVisible显示和隐藏窗口? -
@ThomasFlinkow 是的
-
@XAMlMAX 在这种情况下如何?
-
@XAMlMAX 不,这无济于事。 Archer:不是“不显示”窗口,而是将
WindowState设置为WindowState.Minimized解决方案?您当然也可以使用自定义转换器绑定到它。如果是,那么我将为您做一个工作示例。
标签: c# wpf mvvm data-binding mvvm-light