投稿

flutter 開発メモ

flutter 開発に関するメモです。基本的な内容がほとんどです。

アプリケーションテンプレートの生成
flutter create watashi_app
アプリケーションの実行
アプリケーションのトップフォルダ(pubspec.yaml のあるフォルダ)で、次を実行
flutter run

WPF 添付イベント(Attached Event)実装例

添付イベントの実装例を紹介します。

MainWindow.xaml.cs
usingSystem; usingSystem.Collections.Generic; usingSystem.Diagnostics; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; usingSystem.Windows; usingSystem.Windows.Controls; usingSystem.Windows.Data; usingSystem.Windows.Documents; usingSystem.Windows.Input; usingSystem.Windows.Media; usingSystem.Windows.Media.Imaging; usingSystem.Windows.Navigation; usingSystem.Windows.Shapes; namespaceWpfApp3 { /// <summary>/// MainWindow.xaml の相互作用ロジック/// </summary>publicpartialclassMainWindow : Window { publicMainWindow() { InitializeComponent(); } privatevoidInputChangedHandler(objectsender, RoutedEventArgse) { Debug.WriteLine("InputChangedHanlder is called."); } } publicstaticclassEventHelper { public static readonly DependencyPropertyIsEventRaisingProperty = DependencyProperty.RegisterAttached("IsEven…

WPF ユーザーコントロールのプロパティにデータをバインド

ユーザーコントロールのプロパティに、他のユーザーコントロールのプロパティをバインドしてみます。

ターゲットプロパティ・・・値を設定するプロパティ
ソースプロパティ・・・値を取得してくるプロパティ

ターゲットプロパティは、依存関係プロパティ(Dependency Property)である必要があります。


実装例:
この例では、Slider コントロールの Value プロパティを、TextBox の Text プロパティにバインドしています。なお、TextBox の Text プロパティは依存関係プロパティ(Dependency Property)です。

<Sliderx:Name="slider1"HorizontalAlignment="Left"Margin="49,36,0,0"VerticalAlignment="Top"Width="257" /> <TextBoxHorizontalAlignment="Left"Height="24"Margin="49,85,0,0"TextWrapping="Wrap"VerticalAlignment="Top"Width="257"Text="{Binding ElementName=slider1, Path=Value}"/>

WPF Trigger 実装例

WPF Trigger の実装例です。

Button の Content の値に応じて Button の背景色を赤色に変更します。また、Button にマウスがホバーしている間、Button の文字色を白色に変更します。


<Windowx:Class="TriggerDemo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:TriggerDemo"mc:Ignorable="d"Title="MainWindow"Height="350"Width="525"> <Grid> <ButtonContent="button1"Height="30"Width="200"> <Button.Resources> <StyleTargetType="Button"> <Style.Triggers> <!--Content が "button1" ならば--> <TriggerProperty="Content"Value="but…

WPF 添付プロパティ(Attached Property)の実装方法

WPF でクラスインスタンスを利用する際に、クラスに対して直接プロパティを追加できないが、任意のプロパティを追加して利用したい状況があるかと思います。そのような場合、添付プロパティ(Attached Property)を利用することができます。


MainWindow.xaml.cs

コードビハインドで「propa」と入力してスニペットを挿入します。その後、適宜名前やメタデータを変更していきます。

publicpartialclassMainWindow : Window { publicMainWindow() { InitializeComponent(); } publicstaticdoubleGetRecord(DependencyObjectobj) { return (double)obj.GetValue(RecordProperty); } publicstaticvoidSetRecord(DependencyObjectobj, doublevalue) { obj.SetValue(RecordProperty, value); } // Using a DependencyProperty as the backing store for Record. This enables animation, styling, binding, etc...public static readonly DependencyPropertyRecordProperty = DependencyProperty.RegisterAttached("Record", typeof(double), typeof(MainWindow), new FrameworkPropertyMetadata(0.0) ); privatevoidButton_Click(objectsender, RoutedEventArgse) { varbtn = sender a…

WPF バインディング:Source の使い方

Binding オブジェクトの持つ、Source プロパティの利用方法の紹介です。Source プロパティを利用することで、Resources に登録されている任意のオブジェクトを参照することができます。

例えば、Resources に用意されている Int 型の値を、TextBox の Tooltip プロパティにバインドしてみます。

※ Int 型の値を利用するためには、mscorlib アセンブリの参照を追加しています。

<Windowx:Class="WpfApp3.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp3"mc:Ignorable="d"xmlns:sys="clr-namespace:System;assembly=mscorlib"Title="MainWindow X"Height="350"Width="525"> <Grid> <Grid.Resources> <sys:Int32x:Key="num1">123</sys:Int32> </Grid.Resources> <TextBoxx:Name="textBox1"Height="30"Width="250&q…

WPF バインディング:RelativeSource の使い方

Binding オブジェクトの持つ、RelativeSource プロパティの利用方法の紹介です。

バインディングを利用して、バインドするソースとして、バインドターゲットの UI 要素から相対位置に存在する UI 要素のプロパティを指定する時には、RelativeSource プロパティを利用することができます。

例えば、TextBox の Tooltip プロパティにバインドするバインドソースとして、TextBox の親(Grid)の親である Window の Title プロパティを利用することを考えてみます。

デザインタイムでは、UI 要素は下記の構造になっています。TextBox から、2 つ上位にある Window のプロパティを参照します。

Window
    - Grid
        - TextBox


TextBox.Tooltip プロパティには、RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window} として、RelativeSoure を利用し、Mode に FindAncestor、AncestorType に Window をそれぞれ指定しています。これで、TextBox のツールチップには「MainWindow X」という値が表示されるようになります。

<Windowx:Class="WpfApp3.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp3"mc:Ignorable="d"T…