Можете ли вы привязать данные к свойству, которое содержит параметр в Silverlight? - PullRequest
2 голосов
/ 14 апреля 2010

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

C #

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; }
}

VB

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

1009 * XAML *

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

Ответы [ 3 ]

1 голос
/ 14 апреля 2010

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

0 голосов
/ 14 апреля 2010

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

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

Так что простой ответ на ваш вопросis No .

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

При этом вы можете использовать путь свойства, такой как «Property [parametervalue]» в привязке.

0 голосов
/ 14 апреля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...