我的代码:
<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>
它可以工作,但我想设置窗口可见性而不是网格。
答案 0 :(得分:1)
在这种情况下,绑定窗口可见性可能不是一个好主意。如果您有一段时间后想要隐藏的通知 - 只需关闭它(Close()
)而不是隐藏。
如果您仍然想要这样做 - 将转换器放入您的应用程序(App.xaml
文件)。然后,您将能够在Window.Visibility
绑定中使用它。截至目前 - 窗口Visibility
属性在 Window.Resources
初始化之前设置为,因此您无法使用Window.Resources
内创建的转换器。
替代方法是像这样设置Visibility
:
<Window.Resources>
<local:BoolToVisibleOrHidden x:Key="BoolToVisibility" />
</Window.Resources>
<Window.Visibility>
<Binding Path="IsVisible" Converter="{StaticResource BoolToVisibility}" />
</Window.Visibility>