2017-07-04 3 views
1

マイコード:XAMLでWindowの前にリソースを宣言する方法は?

<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> 

への変更コードの後に​​、それは動作しますが、私が代わりにグリッドのウィンドウの可視性を設定したいです。

+1

あなたは静的なリソースへのデータバインディングを追加することはできません。

別の方法は、このようなVisibilityを設定することです。リソースのトリガーを使用してスタイルを変更するか、グリッドをリソースとして宣言しないで、通常の要素としてバインディングを使用してください。 –

+0

「ウィンドウの可視性を設定しますか?」とはどういう意味ですか? IsVisibleに応じてウィンドウを表示したり隠したりしたいですか? –

+0

@ThomasFlinkowはい – ArcheR

答えて

1

この場合、バインディングウィンドウの可視性は良い考えではないかもしれません。しばらくしてから非表示にする通知がある場合は、非表示にする代わりに閉じる(Close())。

しかし、これをやりたければ、コンバータをアプリケーションに入れてください(App.xamlファイル)。その後、あなたはWindow.Visibilityバインディングでそれを使用することができます。現在のところ、ウィンドウVisibilityのプロパティはに設定されています。Window.Resourcesは初期化されているため、Window.Resourcesの内部で作成されたコンバータは使用できません。

<Window.Resources> 
    <local:BoolToVisibleOrHidden x:Key="BoolToVisibility" /> 
</Window.Resources> 
<Window.Visibility> 
    <Binding Path="IsVisible" Converter="{StaticResource BoolToVisibility}" /> 
</Window.Visibility> 
+0

ありがとうございます。私は、同じウィンドウを複数回使用したいので(メッセンジャーメッセージを受け取ると)通知を閉じる必要はありません。 * App.xaml *にコンバータを入れる方法? – ArcheR

+0

@ArcheR ' <ローカル:BoolToVisibleOrHidden X:キー= "BoolToVisibility" /> ' –

+0

まだ動作していません(今は常に隠されています) – ArcheR

関連する問題