В моем приложении WPF я использую Caliburn.Micro (2.0.1). В App.xaml Заявляет BooleanToVisibilityConverterСтранное поведение BooleanToVisibilityConverter с использованием Caliburn.Micro
<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 все работает отлично. Это неважно, но я не понимаю этого поведения.
Sample код 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>
Должно быть, это сработало, поэтому проблема в другом месте. Попробуйте переделать это в приложении nimimal, и если он все еще не работает, отправьте этот код. –