2011-06-17 12 views
0

私はいくつかの入力変数(オブジェクトとTextBox)を持つコンバータを持っていて、TextBox.Text Stringプロパティを返します。値コンバーター - ConvertBack()メソッドのConvert()変数にアクセスしますか?

私が遭遇している問題は、ConvertBack()私のコンバータの方法です。私は取得したすべてが文字列(テキストボックスのテキスト)なので、オブジェクトに更新をリンクする方法はありません。 Convert()変数の一部に(すべてではないにしても)アクセスできる方法はありますか?または少なくともどのテキストボックスがConvertBack()と呼んでいるか知っていますか?ここで

は私のItemsControlコード:

<ItemsControl x:Name="ItemsControlGrid" ItemsSource="{Binding Path=ProjectOrganLocation.LesionTypes, Source={StaticResource Locator}}" > 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
       <TextBox Width="75" TextAlignment="Center" > 
        <TextBox.Text> 
         <MultiBinding Converter="{StaticResource LesionTypeConverter}" > 
           <Binding RelativeSource="{RelativeSource AncestorType={x:Type TreeViewItem}}" Path="DataContext.OrganLocation"/> 
           <Binding RelativeSource="{RelativeSource Self}" Path="." /> 
          </MultiBinding> 
        </TextBox.Text> 
       </TextBox> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
</ItemsControl> 

そして、ここでは私のコンバータからの抜粋です:

List<CategoryCode> Lesions = organ.getLesionTypes; 

    if (organ.OrganDisplayName == organ.CurrentOrgan) 
     organ.Count++; 
    else 
    { 
     organ.Count = 0; 
     organ.CurrentOrgan = organ.OrganDisplayName; 
    } 
return organ.Labels[organ.Count].LabelPrefix; 
+0

私は 'getLesionTypes'というメソッドを実装する必要がなかったことを嬉しく思っています。 –

答えて

4

あなたの最善の策は、コンバータクラスに私有財産を追加し、値を格納することですConvertBackがそれらにアクセスできるように変換中。しかし、それぞれのバインディングのためにコンバータの別のインスタンスを使用する必要があります。

あなたは何を達成しようとしていますか?コンバータよりも良い方法があるかもしれません。

+0

@Rachel - 私はTreeviewを持っており、ItemsControlによって作成されたラベルと動的な量のテキストボックス(テーブルの個別の値の数に基づいて)を持っています。各テキストボックスはオブジェクトのプロパティに関連付けられ、必要に応じてオブジェクトを更新します。個別のインスタンスを使用するにはどうすればよいですか?私のConvert()メソッドでは、TextBox.Nameプロパティを各TextBoxの固有の値に設定しています。違いがある場合は – Saggio

+0

@ user564636それでは、コンバータは何ですか?この権利を理解しているならば、ItemsControlは 'Objects'のコレクションにバインドされており、各' Object'は 'Attributes'のコレクションを持っています。各オブジェクトは、LabelとAttributesにバインドされたItemsControlを使用して表示されます。属性ItemsControlは、各属性をTextBoxに表示します。あなたのオブジェクトと属性に 'INotifyPropertyChanged'を実装し、双方向バインディングを使うなら、コンバーターは必要ありません。 – Rachel

+0

多分簡単なコードを表示することができます – Rachel

0

コードにバインディングを割り当てると、コンバーターをコンバーターに追加して、送信TextBox(またはその他のデータ)をパラメーターとして取り込みますそれを記録する。

関連する問題