見切り発車

とりあえずかきとめたい

スクリプトエディタの枠組みっぽいものができた

ちょっと進んでなんだかそれらしい感じの枠組みができました。まだ見た目だけです。
f:id:uyamae:20170622063447p:plain

一番外側がDockPanel で左にスクリプト名のListBox, 中央に選択されたスクリプトが表示されます。

<DockPanel>
    <!-- パネルの左側にスクリプトリストを配置 -->
    <ListBox ItemsSource="{Binding ScriptList}"
             DockPanel.Dock="Left"
             x:Name="ScriptList">
        <ListBox.ItemTemplate>
            <DataTemplate DataType="local:ScriptData">
                <TextBlock Text="{Binding ScriptId}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <!-- パネルの中央に選択されたスクリプトを配置 -->
    <ContentControl ContentTemplate="{StaticResource ScriptData}"
                    Content="{Binding SelectedItem, ElementName=ScriptList}">
        
    </ContentControl>
</DockPanel>

あまり凝ったことはしてないですが、ContentoControl 側のContent に"ScriptList" と名前を付けたListBox の選択アイテムをバインドしてみたところすんなり反映されました。

表示されるスクリプトデータはテキストリソースから読み取ってMainWindow のDataContext に設定したものをバインディングしています。
スクリプトデータの詳細は こちら にあります。ここでは割愛します。

選択されたスクリプトのContentControl の中身もDockPanel で上にスクリプトID と説明、中央にコマンドリスト(スクリプト本体)を配置してます。枠の部分をContentControl にするのが適切なのかどうかはちょっと不安があるところです。

<!-- スクリプトデータ -->
<DataTemplate x:Key="ScriptData" DataType="local:ScriptData">
    <DockPanel>
        <StackPanel Orientation="Horizontal"
                    DockPanel.Dock="Top">
            <Label Content="{Binding ScriptId}"></Label>
            <Label Content="{Binding Description}"></Label>
        </StackPanel>
        <ListBox ItemTemplate="{StaticResource Command}"
                 ItemsSource="{Binding CommandList}"
                 SelectionMode="Multiple">
        </ListBox>
    </DockPanel>
</DataTemplate>

ビュー部分はとりあえず整ったのでそろそろロジック部分に取りかかれそうな気がしてきました。