-2

ビューに、送信したメッセージを表示する TextBlock を作成しようとしました。書き込むたびに新しい行を追加し続けるだけです。行ごとに異なるフォント、サイズ、色で書く機能が必要です。

ListViews と RichTextBox でそれを行う例を見つけました。どんなコントロールかは気にしません。MVVM形式に従う必要があるだけで、それが私がこれらの例で問題を抱えているところです。

コマンド ウィンドウに精通している方のために、バッチ ファイルを作成してディスプレイに「エコー」行を表示する方法を教えてください。それが私がやろうとしていることです。

4

1 に答える 1

1

リストボックスで代替行の色が見つかり、Textblockの前景のバインドを使用しました。文字列と色を保持するクラスを作成する必要があることに気づきました。そのクラスをObservableCollectionに入れ、ObservableCollectionにバインドします。

私の新しいクラス:

public class DisplayData
{
    public string _string { get; set; }
    public System.Windows.Media.Brush _color { get; set; }
    public int _fontSize { get; set; }
}

XAML:

<ListBox x:Name="Progress_Window" ItemsSource="{Binding pb._displayString}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding _string}" Foreground="{Binding _color}" FontSize="{Binding _fontSize}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

ここで、pbはVM内のローカルクラス変数です。

モデルのコード:

public ObservableCollection<DisplayData> _displayString { get; set; }
...
_displayString = new ObservableCollection<DisplayData>();
string _error = "Error Opening COM Port";
_displayString.Add(new DisplayData { _string = _error, _color = System.Windows.Media.Brushes.Red, _fontSize = 20 });
于 2013-01-04T14:01:55.273 に答える