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 は、渡された文字列を使用して Paragraph と Run を作成します。

ボタンをクリックすると、FlowDocumentReader は変更されたコンテンツを表示しませんが、WordDocument プロパティにバインドしました。

私は何を間違っていますか?

4

1 に答える 1

1

どのようにWordDocumentプロパティを実装しますか? 依存関係プロパティである必要があるか、プロパティ値を変更するときにそれに応じてイベントを実装INotifyPropertyChangedして発生させる必要があるか、クラスにイベントを追加して値を変更したときにそれを発生させる必要があります。それが単なるプロパティである場合、バインディング式が実行時に値がいつ変更されたかを検出する方法はありません。PropertyChangedWordDocumentChanged

于 2009-07-27T22:14:33.087 に答える