0

所以我在 .xaml 文件中有这个 XAML

<StackPanel>
        <Button Width="200" Height="30" Content="Change Words" 
                Click="Button_Click"/>
        <FlowDocumentReader 
            ViewingMode="Scroll" Zoom="90"
            Focusable="True"
            Background="White"
            IsFindEnabled="True"
            IsPageViewEnabled="True"
            IsScrollViewEnabled="True"
            x:Name="FDR"
            Document="{Binding Path=WordDocument}"
            Width="400" Height="400">            
        </FlowDocumentReader>
    </StackPanel>

在后面的代码中,在加载时,

public partial class Window1 : Window
    {
        MyDoc _myDoc = null;
        FlowDocument _theFlowDocument;

        public Window1()
        {
            InitializeComponent();
            _myDoc  = new MyDoc().Create(); // Create returns MyDoc, that has a WordDocument property with some FlowDocument contents
            this.DataContext = _myDoc ;
        }
 private void Button_Click(object sender, RoutedEventArgs e)
        {
            _myDoc.WordDocument = _myDoc.CreateFlowDocument("Now it's changed");
        }
 }

单击按钮时,我正在更改 WordDocument 的内容。CreateFlowDocument 使用传递的字符串创建一个段落和一个运行。

单击按钮时,FlowDocumentReader 不显示更改的内容,尽管我已将其绑定到 WordDocument 属性

我究竟做错了什么?

4

1 回答 1

1

你如何实现WordDocument属性?它要么需要是一个依赖属性,要么您需要在更改属性值时相应地实现INotifyPropertyChanged并引发事件,或者您需要向您的类添加一个事件并在您更改值时引发该事件。如果它只是一个普通属性,则绑定表达式无法检测值在运行时何时发生变化。PropertyChangedWordDocumentChanged

于 2009-07-27T22:14:33.087 回答