我试图绑定到集合中的单个项目,但我需要能够从元素中传入一个值作为索引。以下是我试图完成的一个示例。
视图模型
public Dictionary<string, string> ListOfString = new Dictionary<string, string>
{
{"0", "TextToDisplay" }
};
查看
<TextBox Tag="0" Text="{Binding ListOfString[Self.Tag]}" />
我不确定如何获取TextBox.Tag
的值并将其传递给ListOfString
答案 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