BooleanToVisibilityConverter与Caliburn.Micro一起使用的奇怪行为
本文关键字:Caliburn Micro 一起 BooleanToVisibilityConverter | 更新日期: 2023-09-27 18:31:43
在我的WPF应用程序中,我使用Caliburn.Micro(2.0.1)。在 App.xaml 中,我声明 BooleanToVisibilityConverter
<BooleanToVisibilityConverter x:Key="BoolToVis" />
现在,当我想在我的一个视图中使用这个转换器时,我写了类似的东西
<Button x:Name="MyButton" Visibility="{Binding visibility, Converter={StaticResource BoolToVis} }"/>
一切正常,但现在我必须在我的 MainVeiew 中使用此转换器。这个视图是我的主要视图。当应用程序启动时,它会抛出异常
System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll
这对我来说非常奇怪,因为如果我在我的视图中写作
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis2" />
</Window.Resources>
并使用BoolToVis2而不是BoolToVis一切正常。没什么大不了的,但我不理解这种行为。
应用示例代码:
App.xaml
<Application x:Class="Test.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Test"
>
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:AppBootstrapper x:Key="Bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<BooleanToVisibilityConverter x:Key="BoolToVis" />
</ResourceDictionary>
</Application.Resources>
</Application>
AppBootstrapper
public class AppBootstrapper:BootstrapperBase
{
public AppBootstrapper()
{
Initialize();
DisplayRootViewFor<MainViewModel>();
}
}
主视图模型
public class MainViewModel : Screen
{
bool _visibility;
public bool Visibility
{
get { return _visibility; }
set
{
_visibility = value;
NotifyOfPropertyChange("Visibility");
}
}
protected override void OnActivate()
{
base.OnActivate();
Visibility = false;
}
}
主视图
<Window x:Class="Test.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainView" Height="300" Width="300">
<Grid>
<Button x:Name="MyButton" Content="Test" Visibility="{Binding Visibility, Converter={StaticResource BoolToVis}}" />
</Grid>
任何 UIElement 的可见性属性从可见性枚举器获取值。不使用布尔值,请使用可见,隐藏或折叠。