2010-11-10 51 views
1

我想绑定我的列表框的数据。想象一下,我有这样的:Xaml绑定外部itemtemplate

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

MYLIST包含有一个名为属性的对象的观察集合“值” AbsoluteValue是视图模型的属性,如MYLIST财产。

当然,文本框Seconde系列将始终相同的值,但它是我想要的东西:)

我怎么能告诉绑定DataContext的是不是第二个文本框一样吗?

预先感谢任何帮助

编辑:我真正的样品是一个StackPanel。 我tryed

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 }); 
} 

,但它不工作

回答

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 10作为虚拟机并将其绑定为源。

+0

事实上,这不是一个文本框,而是一个带有VisibilityProperty的StackPanel。我试过了:private void StackPanel_Loaded(object sender,RoutedEventArgs e) StackPanel stackPanel = sender as StackPanel; (StackPanel.VisibilityProperty,new Binding(“Loaded”){Source = DataContext,Mode = BindingMode.TwoWay}); } 但它不起作用 – Tim 2010-11-10 12:54:11

+0

我假设你的VM上的Loaded属性是布尔值? VisibilityProperty是可见性类型。你需要一个转换器。 (布尔到可见性) – 2010-11-10 13:15:13

+0

哦,是的,忘记使用它:( stackPanel.SetBinding(StackPanel.VisibilityProperty,新的绑定(“加载”){源= DataContext,模式= BindingMode.TwoWay,转换=新的VisibilityConverter()}) ; 没关系:)谢谢 – Tim 2010-11-10 13:35:00