Reputation: 329
In my WPF application I use Caliburn.Micro (2.0.1). In App.xaml I declare BooleanToVisibilityConverter
<BooleanToVisibilityConverter x:Key="BoolToVis" />
Now when I want use in one of my view this converter I wrote something like that
<Button x:Name="MyButton" Visibility="{Binding visibility, Converter={StaticResource BoolToVis} }"/>
Everything works great but now I must use this converter in my MainVeiew. This View is my primary view. When application starts it's throw exception
System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll
It is verry strange for me because if I write in my View
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis2" />
</Window.Resources>
and use BoolToVis2 instead of BoolToVis everything works fine. It i no big deal but I dont understand this behaviour.
Sample code of applcation:
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>();
}
}
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;
}
}
MainView
<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>
Upvotes: 2
Views: 1198
Reputation: 11
Visibility property for any UIElement gets values from Visibility enumerator. instead of using boolean use Visible,Hidden or Collapsed.
Upvotes: 1