1

私はいくつかの要素にバインドするWPF ListBoxを持っています(私はカスタマイズできません)。バインディング自体もシール クラスです。

この要素には、CultureInfo パラメーターを受け取る ToString があります。その特定の表現にバインドしたい-そのパラメーターを渡すことによって(実行中のスレッドから取得します)。その特定の表現を示すためにバインディングを指定する方法はありますか?

XAML:

<ListBox Height="212" HorizontalAlignment="Left" Margin="6,6,0,0" 
    Name="listBoxTriggers" VerticalAlignment="Top" Width="183" />

アイテムのソース:

listBoxTriggers.ItemsSource = _triggers

そしてコードビハインド(呼び出したいメソッド)

trigger.ToString(cultureInfo);
4

1 に答える 1

1

注:このリンクでコンバーターを使用するための適切なオプションがあります。

私が正しく理解している場合は、特定のカルチャを使用してListBoxにToString()を表示する必要があります。それは可能かもしれませんが(上記のリンクを参照)、回避策は、トリガーのIDと探しているToString()表現を保持するDTOを使用することです。

public class TriggerDto
{
    public int TriggerId { get; set; }
    public string TriggerName { get; set; }
}

新しいリストを作成してから、すべてのトリガーをループして、新しいTriggerDtoオブジェクトを追加します。

List<TriggerDto> triggerDtos = new List<TriggerDto>();

foreach (Trigger trigger in _triggers)
{
    triggerDtos.Add(new TriggerDto() { Id = trigger.Id, TriggerName = trigger.ToString(cultureInfo) });
}

this.TriggerDtos = triggerDtos;

バインディングをTriggerDtosに設定します。

ユーザーがTriggerDtoを選択すると、そのIDを使用して、作業する実際のTriggerオブジェクトを取得する必要があります。

免責事項:ここでタイプミスの可能性があります。Visual Studioではなく、回答に直接コードを入力しました。

于 2012-11-17T14:31:45.920 に答える