2010-11-20 16 views
3

TabControlICollectionViewにバインドされており、ObservableCollection<EditorTabViewModel>に由来しています。私は非常に標準的なMVVMマルチドキュメントのパターンと思いますか?とにかく、EditorTabViewModelには、表示する文字列を含むContentというプロパティがあります。私はバインディングはコミットされませんか?

// Add 2 default tabs for a test, also set their Content property to the respective values ... 
_tabs.Add(new EditorTabViewModel { Content = "Tab 1" }); 
_tabs.Add(new EditorTabViewModel { Content = "Tab 2" }); 

その値が正しく

XAML

<!-- DataTemplate to render EditorTabViewModels --> 
<DataTemplate DataType="{x:Type vm:EditorTabViewModel}"> 
    <me:MarkdownEditor 
     TextContent="{Binding Path=Content.Content, RelativeSource={RelativeSource Mode=TemplatedParent}, Mode=TwoWay}" 
     Options="{Binding Path=Options, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" /> 
</DataTemplate> 

結果

をレンダリングしている...バインディングが動作していることを見つけます3210

しかし、私は値、スイッチタブとリターンを変更したときに、私は再び、コンストラクタで設定された文字列を取得するには... Visual Studio Solution

+0

Mediafireではソースをダウンロードできません。おそらく、私の地域の人々の多くが、現時点でそれから何かをダウンロードしようとしているからです。 –

答えて

0

MarkdownEditor.xamlのTextBox "txtEditor"のUpdateSourceTriggerをPropertyChangedに変更します。 TextBoxの既定のUpdateSourceTrigger値はLostFocusであり、タブを変更するとそのイベントは発生しません。そのため、以前の値に戻すのは

<TextBox Grid.Row="1" x:Name="txtEditor" AcceptsReturn="True" 
     Text="{Binding TextContent, UpdateSourceTrigger=PropertyChanged}" 
     FontFamily="{Binding Path=Options.FontFamily}" 
     FontSize="{Binding Path=Options.FontSize}" 
     FontWeight="{Binding Path=Options.FontWeight}" 
     Background="{Binding Path=Options.Background}" 
     Foreground="{Binding Path=Options.Foreground}" /> 
+0

私は確信していませんが、この解決方法はメモリ消費量を高くする可能性があります。 'txtEditor'のすべてのテキスト変更に新しい文字列を割り当てようとしています。短いテキストの場合は、手頃な価格ですが、ドキュメントエディタではありません。 LostFocusイベントなどにフックする方が良いです。 –

+0

@ alpha-mouse .NETのガベージコレクタが動作する方法のために、文字列のような小さな短命オブジェクトの膨大な(膨大な)数の作成はほとんど問題になりません。 – Bevan

+0

@Bevan:ここでテキストエディタについて話しています。だから、これらの文字列は特に_small_するつもりはありません。 –

0

私はMarkdownEditor.TextContent財産と仮定しますthis video (on screenr)

に示します値が変更されていることを誰にも知らせないので、バインドメカニズムは新しい値をEditorTabViewModel.Contentに書き込むことを気にしません。 TextContentMarkdownEditorの依存関係プロパティである場合、実際にテキストを編集するために使用しているコントロールから変更されたテキストを受け取ることができますか(TextBoxまたは何か)?

関連する問題