0

いくつかの入力変数(オブジェクトとTextBox)を持ち、TextBox.TextStringプロパティを返すコンバーターがあります。

私が遭遇している問題は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;
4

2 に答える 2

4

最善の策は、ConvertBackがアクセスできるように、Converterクラスにプライベートプロパティを追加し、Convert中に値を格納することです。ただし、バインディングごとにコンバーターの個別のインスタンスを使用する必要があります。

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

于 2011-06-17T18:19:48.763 に答える
0

コードビハインドでバインディングを割り当てる場合は、送信側のTextBox(またはその他のデータ)をパラメーターとして受け取るコンストラクターをコンバーターに追加して、それを記録できます。

于 2011-06-17T18:24:57.487 に答える