リリースしました。リリースノートは以下になります。
ポイント
パッケージを分割しました。
今まで
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 { public class ViewAViewModel : BindableBase { private string _message; public string Message { get { return _message; } set { SetProperty(ref _message, value); } } private bool _status; public bool Status { get { return _status; } set { SetProperty(ref _status, value); } } public ViewAViewModel() { Message = "View A from your Prism Module"; } public void 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 じゃないプロジェクトでも、あると便利ですので是非使ってみてね!