C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

WPFを利用してみる2

こちらの続きです。
WPFを利用してみる1 - C#ATIA

後はUI用のウィンドウです。

<!--xaml-->
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="250" Width="300">
    <Grid>
        <TextBox HorizontalAlignment="Left" Height="150" Margin="10,10,10,10" TextWrapping="Wrap"
                 Text="{Binding Path=Txt , UpdateSourceTrigger=PropertyChanged}" 
                 VerticalAlignment="Top" Width="272" AcceptsReturn="True"
                 FontSize="20" FontFamily="MS PGothic"/>
    </Grid>
</Window>

xaml側は、基本的にWPFテンプレートで作ってTextBoxを貼り付けた程度です。
TextBoxを前回のDrawTextクラスのTxtプロパティとバインドし、
見やすくする為フォントを少し変更しました。
リアルタイムな変更と改行をテストしたかったので、改行を可能にし
Bindingソースの更新タイミングも変更してみました。

//cs
using System.Windows;
using System.Runtime.InteropServices;//COMオブジェクトを操作するために必要
using CatWPFTest;

namespace WpfApplication1 {
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();

            Execute();
        }

        public void Execute() {
            var catia = (INFITF.Application)Marshal
            .GetActiveObject("CATIA.Application");
            var cat = new CatiaContainer(catia);
            cat.SetActiveView();
            var drawtest = new DrawText(cat.Texts.Add("", 0d, 0d));
            this.DataContext = drawtest;        
        }
    }
}

アクティブなViewの原点にテキストを作成し、DataContextにバインドさせています。

実際に実行してみると、狙い通りにリアルタイムな変更が出来ました。
又、改行に関しても通常のエディタの様にEnterキーのみでやってくれるため
通常のShift(又はCtrl)+Enterより自然な感じです。
これ、"Formで出来ないのか?" と言われれば、恐らく出来ます・・・。