Можете ли вы привязать данные к свойству, которое содержит параметр в Silverlight?

2

В Silverlight вы можете привязываться к свойству, содержащему параметр? Например, следующее, похоже, не работает. Я что-то упустил или это невозможно?

С#

private System.Collections.Generic.Dictionary<string, string> ValuesField = new System.Collections.Generic.Dictionary<string, string>();
public string Value {
    get { return ValuesField(FieldName); }
    set { ValuesField(FieldName) = value; }
}

В. Б.

Private ValuesField As New System.Collections.Generic.Dictionary(Of String, String)
Public Property Value(ByVal FieldName As String) As String
        Get
            Return ValuesField(FieldName)
        End Get
        Set(ByVal value As String)
            ValuesField(FieldName) = value
        End Set
End Property

XAML

<TextBox Name="TextBox1" VerticalAlignment="Top" Width="120"Text="{Binding Path=Value[MyField],Mode=TwoWay }"  />
Теги:
silverlight

3 ответа

1
Лучший ответ

Попробуйте использовать IValueConverter для привязки

  • 0
    Не могли бы вы рассказать о том, как это сделать?
0

VB имеет синтаксис, необходимый для создания параметризованного свойства, но С# не поддерживает параметризованные свойства.

Анализ XAML также не распознает параметризованные свойства.

Итак, простой ответ на ваш quesiton: Нет.

Один из способов эмуляции этого в С# заключается в том, чтобы вывести Type на свойство (nowlessless), которое имеет Indexer, который принимает требуемые параметры. Примечание для совместимости с XAML индексатор ограничивается наличием единственного параметра типа int и/или строки.

С этим вы можете использовать путь свойства, например "Свойство [parametervalue]" в привязке.

0

Ваш С# немного неуловимый - вам нужны квадратные скобки: ValuesField[FieldName]

Нет причин, по которым вы не можете привязываться к значению, возвращаемому из индексированной коллекции, но с SL3 вы очень ограничены значением, которое вы можете передать, чтобы указать используемый индекс.

Отметьте эту статью MSDN для возможностей SL3 и this link для примера того, что возможно в SL4. В SL4 вы получаете возможность использовать строковые индексы, но не похоже, что вы можете сделать их динамическими, они должны быть статически (жестко) закодированы. Обратите внимание, что SL имеет подмножество способности связывания, которое имеет WPF, поэтому то, что вы видите в WPF, не может быть обязательно применено в SL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню