2012-04-09 8 views
1

私はWpf-Appを持っています。 Person StructはSql-serverテーブルです。私はLinq-to-Sqlをプロジェクトに使用しています(dbmlのクラスは人を参照しています)。情報クラスのWPFウィンドウタイトルバインディングベース?

私は人を更新または挿入するためのフォームを持っています(単純なモーダルウィンドウ)。このウィンドウには、人の現在価値を持っているPeopertyがあります。

public Person CurrentPerson { get; set; } 

それでは、私が探しは次のとおりです。

どのようにバインドCurrentPerson.FullNameにこのウィンドウベースのタイトル? CurrentPerson.FullNameが変更された場合、絶対にウィンドウタイトルが変更されなければなりません!

編集:詳細
私はCurrentPerson.Nameと同等に同じ設定されていないCurrentPerson.Name上のウィンドウタイトルベースを変更したいです。だからこれは何か変わるかもしれない。また、私はthisとこのQuestionの部分を変更する前に検索しました。価値のあるタイトルの一部を変更する必要があります。

答えて

1

まず、コードビハインドまたはビューモデルにINotifyPropertyChangedを実装する必要があります。

Person _currentPerson; 
public Person CurrentPerson 
{ 
    get { return _currentPerson; } 
    set 
    { 
     _currentPerson = value; 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs("WindowTitle")); 
    } 
} 

EDIT:あなたを投稿してくださいあなたの変更があなたのCurrentPersonFullNameは、ちょうど例えばPropertyChangedイベントを、投げるたび、この後

public string WindowTitle 
{ 
    get { return "Some custom prefix" + CurrentPerson.FullName; } 
} 

:その後、次のようにプロパティWindowTitleを実装初心者の投稿に対するあなたのコメントを見て、バインディングのxamlコードは、犯人のように思えます。また、WindowDataContextをそれ自身に設定していることを確認してください。

+0

ありがとう私は現在のウィンドウの 'DataContext'を設定しません。それがうまくいきました。 – Rev

1

あなたはこのようにそれを行うことができます。

Person _currentPerson; 
public Person CurrentPerson 
{ 
    get { return _currentPerson; } 
    set 
    { 
     _currentPerson = value; 
     this.Title = value.FullName; 
    } 
} 
+0

ありがとうございます。私はバインディングしたい! – Rev

+1

@Rev誰かがこれを行うことができるか、それが不可能な理由を説明できるかどうかを見たいと思います。この場合、通常のバインド方法は機能しないようですが、理由はわかりません。 – McGarnagle

+0

はい私は依存性の小道具やコンバータを試してみますが、私はこれを行うことはできません。私はこれを行う方法がわからない、多分誰かが私を助けることができます! – Rev

2

編集:私は完全に質問を誤解しているため、古い答えを削除しました。

あなたの拘束力に問題がある可能性があります。 CurrentUser(binding source)を検索する場所を決めることができないため、バインディングが失敗すると思います。あなたはこれを試すことができます -

編集2:あなたがあなたのコントロールに名前を付けた後、同様に、要素の結合にその名前を使用することができます。これが機能しない場合

<Window x:Class="TestApp.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="{Binding ElementName=MW,Path=CurrentUser.FullName, StringFormat='Welcome \{0\}!'}"   
    Name="MW"> 

あなたは、結合のためのWPFのデバッグを有効にすることができます式は

Tools -> Options -> Debugging -> Output Window -> WPF Trace Settings [これはVS2010用です。 ]他の人と同様でなければなりません。]

バインディングエラーがあるかどうか、もしあればそれが何であるかを確認してください。

+0

@Rev:ああ、私はLinq-to-Sqlビットが欠けていました。それは下降票を説明するでしょう(それは問題ありません)。私は今問題を理解することを願っています。 – NoviceProgrammer

+0

@Rev:タイトルバーや標準の標準ウィンドウにカスタムコントロールを使用しているかどうかはわかりませんでした。 – NoviceProgrammer

+0

wpfデバッグのための+1またあなたの注意 – Rev

関連する問題