Silverlight将DataContext传递给ConverterParameter?

时间:2012-03-02 20:54:35

标签: silverlight mvvm silverlight-5.0

如何将LayoutRoot的DataContext传递给ListBox项目模板中ContentControl的转换器?

<Grid x:Name="LayoutRoot" Background="White" DataContext="{Binding Source={StaticResource myViewModel}}">
    <StackPanel HorizontalAlignment="Left" Margin="6,6,0,394" Orientation="Vertical" Width="200" d:LayoutOverrides="Height">
    <ListBox
            x:Name="listBox2"
            ItemsSource="{Binding MyCollection, Mode=TwoWay}"
            VerticalAlignment="Top" Height="400">

            <ListBox.ItemTemplate>
                <DataTemplate>
                    <ContentControl Content="{Binding}"
                                    ContentTemplate="{Binding Converter={StaticResource myConverter}}" />
                </DataTemplate>
            </ListBox.ItemTemplate>

        </ListBox>

        <TextBox Text="{Binding Value1, Mode=TwoWay}" />
    </StackPanel>
</Grid>

我希望能够从Converter中触摸DataContext中的对象,并使用它们对ListBox项目的datatemplate中的控件进行TwoWay绑定。

有什么想法吗?有什么建议吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

我只是使用以下方法将DataContext连接到转换器:

<ContentControl Content="{Binding}"
                ContentTemplate="{Binding Converter={StaticResource stringToDataTemplateConverter}, ConverterParameter={StaticResource myViewModel}}" />

现在我有另一个问题,我的动态属性绑定无效。

答案 1 :(得分:0)

(抱歉我的英语不好)

我不确定你要在这里做什么但是使用SL 5你可以使用RelativeSource来获取DataContext:

{Binding DataContext,RelativeSource={RelativeSource AncestorLevel=1,AncestorType=Grid}}