【问题标题】:Silverlight pass DataContext to ConverterParameter?Silverlight 将 DataContext 传递给 ConverterParameter?
【发布时间】:2012-03-21 08:45:15
【问题描述】:

如何将 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>

我希望能够从转换器内触摸 DataContext 内的对象,并将它们用于 ListBox 项的 DataTemplate 内控件上的双向绑定。

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

谢谢。

【问题讨论】:

    标签: silverlight mvvm silverlight-5.0


    【解决方案1】:

    我刚刚使用以下方法将 DataContext 送到转换器:

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

    现在我遇到了另一个问题,我的动态属性绑定不起作用。

    【讨论】:

      【解决方案2】:

      (对不起我的英语不好)

      我不确定您在此处尝试做什么,但使用 SL 5 您可以使用 RelativeSource 获取 DataContext:

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

      【讨论】:

      • 不能在Bindings中使用Bindings,所以不能用这种方式设置转换器参数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2018-03-23
      • 2019-05-08
      • 1970-01-01
      • 2012-04-23
      相关资源
      最近更新 更多