WPF绑定到单个列表项使用元素属性作为索引值

时间:2016-01-12 16:31:31

标签: c# .net wpf xaml binding

我试图绑定到集合中的单个项目,但我需要能够从元素中传入一个值作为索引。以下是我试图完成的一个示例。

视图模型

public Dictionary<string, string> ListOfString = new Dictionary<string, string>
{ 
    {"0", "TextToDisplay" }
};

查看

<TextBox Tag="0" Text="{Binding ListOfString[Self.Tag]}" />

我不确定如何获取TextBox.Tag的值并将其传递给ListOfString

1 个答案:

答案 0 :(得分:2)

您可以使用MultivalueConverter来传递ListOfStrings Dictionary以及Tag的{​​{1}}属性,如下所示:

TextBox

转换器只会获得 <Window.Resources> <ns:ValuFromDicConverter x:Key="ValuFromDicConverter"/> </Window.Resources> <Grid> <TextBox Tag="0" x:Name="tb"> <TextBox.Text> <MultiBinding Converter="{StaticResource ValuFromDicConverter}"> <Binding Path="ListOfString"/> <Binding ElementName="tb" Path="Tag"></Binding> </MultiBinding> </TextBox.Text> </TextBox> </Grid>

中的相应值
Dictionary

并且不要忘记将字典定义为属性并设置 public class ValuFromDicConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values == null) return null; return (values[0] as Dictionary<string, string>)[values[1].ToString()]; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }

DataContext