绑定源更改时,FlowDocumentReader Document不会收到通知,为什么?

时间:2009-07-27 22:12:03

标签: wpf flowdocument data-binding

所以我在.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使用传递的字符串创建Paragraph和Run。

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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