Bind WPF TextBlock to text file

2019-03-03 04:12发布

问题:

How can I bind a WPF TextBlock to a text file? I want for the TextBlock to display the content of the file.

回答1:

You need to read the file into a string in memory and bind to that string instead.

View model:

class ViewModel
{
    public string FileText { get; set; }
    public void ReadFile(string path)
    {
        FileText = File.ReadAllText(path);
    }
}

XAML:

<TextBlock Text="{Binding FileText}"/>


回答2:

If you want the text to be formatted my inline markup you could look at the sub-class of TextBlock I made here. There is a convertor between a String of xaml markup and an InlineCollection(actually a generic list of Inlines) too.



回答3:

This post describes a custom markup extension that, once defined, lets you include the content of a file via XAML:

<Window
    x:Class="WPF.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wpf="clr-namespace:WPF">
    <TextBlock Text="{wpf:Text 'Assets/Data.txt'}" />
</Window>