リリースしました。リリースノートは以下になります。
ポイント
パッケージを分割しました。
今まで
LivetCask
全部入りパッケージ
LivetExtensions
フォルダーダイアログ
今回
LivetCask
Livet とは切っても切れないクラス群(ViewModel、Messenger 関連、コレクション)と、以下の各種パッケージへの依存関係。
LivetCask.Behaviors
Livet の便利 Behavior。バインドできないプロパティをバインドするようなものや LivetCallMethodAction、DataContextDisposeAction、WindowCloseCancelBehavior など
LivetCask.Converters
WPF 関連の enum と bool を相互変換するコンバーター群
LivetCask.EventListener
PropertyChangedListener や CollectionChangedEventListener などのイベントハンドリング系クラス
LivetExtensions
フォルダーダイアログ
出来るようになること
Prism + LivetCask.Behaviors などのパッケージの組み合わせ
例えば Prism のプロジェクトに Livet.Converters パッケージと Livet.Behaviors パッケージを追加して以下のような感じに ViewModel をします。
using Prism.Mvvm; namespace HelloWorld.ViewModels { publicclass ViewAViewModel : BindableBase { privatestring _message; publicstring Message { get { return _message; } set { SetProperty(ref _message, value); } } privatebool _status; publicbool Status { get { return _status; } set { SetProperty(ref _status, value); } } public ViewAViewModel() { Message = "View A from your Prism Module"; } publicvoid Switch() { Status = !Status; } } }
そして XAML で Livet の機能を使います。
<UserControl x:Class="HelloWorld.Views.ViewA"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:HelloWorld.Views"xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors"xmlns:l="http://schemas.livet-mvvm.net/2011/wpf"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"mc:Ignorable="d"d:DesignHeight="300"d:DesignWidth="300"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"><UserControl.Resources><l:VisibilityAndBooleanConverter x:Key="VisibilityAndBooleanConverter"ConvertWhenFalse="Collapsed" /></UserControl.Resources><StackPanel><TextBlock Text="{Binding Message}"HorizontalAlignment="Center" /><Button Content="Switch"><behaviors:Interaction.Triggers><behaviors:EventTrigger EventName="Click"><l:LivetCallMethodAction MethodTarget="{Binding}"MethodName="Switch" /></behaviors:EventTrigger></behaviors:Interaction.Triggers></Button><Border Background="Red"Width="100"Height="100"Visibility="{Binding Status, Converter={StaticResource VisibilityAndBooleanConverter}}"/></StackPanel></UserControl>
LivetCallMethodAction
や VisibilityAndBooleanConverter
を使ってます。
こんな感じで動いてます。
まとめ
Converter とか Behavior とか Listener 系は Livet じゃないプロジェクトでも、あると便利ですので是非使ってみてね!