WPF,将列表的特定项绑定到TextBlock

时间:2018-12-07 16:03:56

标签: wpf binding

我有一个双打列表。我想将此列表的特定项目绑定到TextBlock。此特定项目由另一个控件(组合框)确定:

<ComboBox Name="MyBox">
....
</ComboBox>

<TextBlock Binding="{MyList, >get item index == MyBox.SelectedIndex< }"/>

我现在可用的解决方案是将TextBlock绑定到上下文的另一个属性,但是,我宁愿采用另一种方法,因为这迫使我必须设置多个属性更改通知...

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以在绑定中使用.xamlElementName=_中引用另一个控件,然后使用Path=_指定绑定的路径,如下所示:

<ComboBox Name="MyBox">
....
</ComboBox>

<TextBlock Binding="{Binding ElementName=MyBox, Path=SelectedItem}"/>

答案 1 :(得分:0)

我想出了一个适合我需要的解决方案,它涉及使用MultiBinding和Converter:

<TextBlock>
    <TextBlock.Text>
        <MultiBinding Converter="{StaticResource GenericMemConverter}">
            <Binding Path="TotalGPUMemory"/>
            <Binding ElementName="CurPlatformView" Path="SelectedIndex"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

如您所见,我指向该应用程序的另一个控件,并传递了 SelectedIndex

转换器:

    public object Convert(object[] o, Type type, object parameter, CultureInfo culture)
    {
        List<long> vals = (List<long>)o[0];
        int plat = (int)o[1];

        double mb = (double)vals[plat] / 1024.0 / 1024.0;
        return mb.ToString("N1") + "MB";
    }