所以我在.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属性
我做错了什么?
答案 0 :(得分:1)
如何实施WordDocument
财产?它需要是依赖属性,或者您需要在更改属性值时相应地实现INotifyPropertyChanged
并引发PropertyChanged
事件,或者需要向您的类添加WordDocumentChanged
事件当你改变价值时提高它。如果它只是一个普通的属性,那么绑定表达式就无法检测值何时在运行时发生变化。