こちらの続きです。
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で出来ないのか?" と言われれば、恐らく出来ます・・・。