Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

Liver 3.0.3 をリリースしました。Prism + Livet (一部) のようなシナリオをサポート

$
0
0

リリースしました。リリースノートは以下になります。

github.com

ポイント

パッケージを分割しました。

今まで

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>

LivetCallMethodActionVisibilityAndBooleanConverterを使ってます。 こんな感じで動いてます。

f:id:okazuki:20190928123332g:plain

まとめ

Converter とか Behavior とか Listener 系は Livet じゃないプロジェクトでも、あると便利ですので是非使ってみてね!


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>