将ComboBox项绑定到不同DataContext的text属性

时间:2010-06-21 13:37:25

标签: wpf data-binding binding combobox

我有一个ComboBox,如下所示。我想要的是将SelectedItem值绑定到Text的{​​{1}}属性,以便另一个DataContext可以显示DataTemplate。请注意,Image和目标ComboBox元素位于两个不同的Image上,因此我需要更新DataTemplate Text属性(ImageName)在后端。

DataContext

2 个答案:

答案 0 :(得分:0)

您可以将每个项目设置为具有特定的数据上下文。

我不确定你的xaml你试图设置哪个项目,我认为这是最后一行 <Image Source="{Binding Path=Image' ... />

您只需指定该控件的数据上下文即可。

编辑回复评论

由于您试图从组合框中获取所选项目并尝试将其发送到图像,为什么不将其作为值传递到保存图像的类中。

我认为你可以在xaml中做到这一点,但我不完全确定如何做到这一点。

答案 1 :(得分:0)

看起来你正试图做这样的事情:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:sys="clr-namespace:System;assembly=mscorlib">
  <DockPanel>
    <TextBox DockPanel.Dock="Top" x:Name="Source">x1</TextBox>
    <ComboBox DockPanel.Dock="Top" x:Name="myComboBox" 
       SelectedValue="{Binding ElementName=Source, Path=Text, Mode=TwoWay}">
      <sys:String>1</sys:String>
      <sys:String>22</sys:String>
      <sys:String>333</sys:String>
      <sys:String>4444</sys:String>
    </ComboBox>
    <TextBlock DockPanel.Dock="Top" 
       Text="{Binding ElementName=myComboBox, Mode=OneWay, Path=SelectedItem.Length}"/>
  </DockPanel>
</Page>

使用双向绑定将ComboBox绑定到TextBox的文本,因此当您从ComboBox中选择一个项目时,它会更新TextBox,并且当您在TextBox列表中的ComboBox中键入值时,它会更改ComboBox中的所选项。

TextBlock绑定到ComboBox中所选项目的属性。每当所选项目发生更改时,无论是因为用户选择了新项目还是更改了TextBox中的值,都会更新TextBlock

但是我对所有关于数据上下文的讨论感到困惑。您发布的示例中的所有对象都没有数据上下文。