1
在我的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一切工作正常。我沒有什麼大不了的,但我不明白這種行爲。的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
對於任何的UIElement<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>
它應該已經工作,所以問題可以在別的地方。嘗試在一個簡單的應用程序中進行修改,如果仍然失敗,請發佈該代碼。 – 2014-11-24 19:31:36