Xaml绑定在itemtemplate之外

时间:2010-11-10 11:54:26

标签: silverlight data-binding xaml

我想绑定我的列表框的数据。想象一下,我有类似的东西:

<ListBox ItemsSource="{Binding MyList}">
  <ListBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text={Binding Value} />
        <TextBlock Text={Binding AbsoluteValue} />
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

MyList包含一个可观察的对象集合,该对象具有名为“Value”的属性 AbsoluteValue是视图模型的属性,作为MyList属性。

当然,seconde文本框将始终具有相同的值,但这正是我想要的:)

如何告诉绑定第二个文本框的datacontext不相同?

提前感谢您提供任何帮助

编辑:我的真实样本是StackPanel。 我试过了

private void StackPanel_Loaded(object sender, RoutedEventArgs e)
{
    StackPanel stackPanel = sender as StackPanel;
    stackPanel.SetBinding(StackPanel.VisibilityProperty, new Binding("Loaded") { Source = DataContext, Mode = BindingMode.TwoWay }); 
}

但它不起作用

1 个答案:

答案 0 :(得分:0)

XAML:

<TextBlock x:Name="tbAbsoluteValue" Loaded="AbsoluteValue_Loaded" />

代码隐藏:

void AbsoluteValue_Loaded(object sender, RoutedEventArgs e)
{
    TextBlock absoluteValue = sender as TextBlock;

    absoluteValue.SetBinding(TextBlock.TextProperty, new Binding("AbsoluteValue") { Source = VIEW_MODEL_OBJECT, Mode = BindingMode.TwoWay });
}

这是实现目标的一种方法,您也可以使用转换器,或者在StaticResource中为VM创建Resources并将其作为源绑定。