2010-11-10 88 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