2011-07-22 7 views
1

私はオブジェクトのセットを保持するListBoxを持っています(ObservableCollectionにItemsSourceバインドでリンクされています)。私はまだ動的バインディングを使用していません。現在、オブジェクトのToString()メソッドを使用しています。 ToStringメソッド()メソッドは、このように文字列を示していますname (someOtherProperty)しかしフォーマットされた文字列としてのバインド

INotifyPropertyChangedのが実装され、私はアイテムのプロパティを変更した場合、この文字列はを更新されないのObservableCollection、を使用することをされている場合でも。

これは、ToStringを1回だけ呼び出すためです。代わりに私はデータバインディングを使用する必要があると思いますどのように私はそれでこのような文字列を形成することができますか? < <名前(someOtherProperty)>>

ありがとうございました。

+0

それはそれを思い出してしまうのPropertyChange通知を受けたことがないので、それは、一度だけ 'ToString'メソッドを呼び出しますことをご主張:

あなたはこのようにそれを使用しています。すべてのバインディングを再度チェックするように指示する 'PropertyChanged(null)'を実行することによって、 'ToString'を再度呼び出すように強制できます。それを超えて、私はあなたの質問の残りの部分を理解していません。 – CodingGorilla

+0

@ CodeGorilla:これは、バインディングがないために始まりません。メソッドはただ実行され、それは実行されません。 –

+0

そうです、そういうわけで私は "私は思っています..."と言いました。私は確信が持てませんでしたが、試してみる価値があると思いました。何らかの理由で彼は適切な財産に縛ることができない、またはしたくないようです。 – CodingGorilla

答えて

3

などのマルチバインディングを使用できます。

<MultiBinding StringFormat="{}{0} ({1})"> 
    <Binding Path="name"/> 
    <Binding Path="someOtherProperty"/> 
</MultiBinding> 

ToStringを実行させるだけでは、適切なバインディングはありません。通知は効果がありません。

<ListBox ...> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock> 
       <TextBlock.Text> 
        <!-- The above binding here --> 
       </TextBlock.Text> 
      </TextBlock> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+0

どこを設定する必要がありますか? – Rushino

+0

実際のバインディングXAMLを表示するために質問を更新できますか?次に、 'MultiBinding'を使用するために正しくフォーマットするのを手伝ってください。 – CodingGorilla

+0

@コーディングゴリラ:彼/彼女のコードにバインディングはありません。 –

関連する問題