2012-02-24 126 views
0

具有视图模型具有两个属性:地点和美国 地点是被选择当前视图和经由形式被显示(下图):父属性绑定

<StackPanel Orientation="Vertical" Margin="20,00,0,0" FlowDirection="LeftToRight" DataContext="{Binding Venue}"> 
      <TextBlock Text="Venue Name" Style="{StaticResource FormHeading}" /> 
      <TextBox x:Name="txtVenueName" Width="200" MaxLength="70" HorizontalAlignment="Left" Text="{Binding VenueName, Mode=TwoWay}" /> 

      <TextBlock Text="Address" Style="{StaticResource FormHeading}" /> 
      <TextBox x:Name="txtAddress" Width="300" MaxLength="100" HorizontalAlignment="Left" Text="{Binding Address, Mode=TwoWay}" /> 

      <TextBlock Text="City" Style="{StaticResource FormHeading}" /> 
      <TextBox x:Name="txtCity" Width="200" MaxLength="100" HorizontalAlignment="Left" Text="{Binding City, Mode=TwoWay}" /> 

      <TextBlock Text="State" Style="{StaticResource FormHeading}" /> 
      <ComboBox Width="70" HorizontalAlignment="Left" Name="cmbState" DisplayMemberPath="FullName" 
         ItemsSource="{Binding Path=States, ElementName=LayoutRoot}"/> 

      <TextBlock Text="Zipcode" Style="{StaticResource FormHeading}" /> 
      <TextBox x:Name="txtZipCode" Width="50" MaxLength="5" HorizontalAlignment="Left" Text="{Binding Zipcode, Mode=TwoWay}" /> 

      <StackPanel Orientation="Horizontal" Margin="0,10,0,0"> 
       <TextBlock Text="Active?" Style="{StaticResource FormHeading}" Margin="0,0,10,0" /> 
       <CheckBox Name="chkActive" /> 
      </StackPanel> 
     </StackPanel> 

国不是地点中的一员,但是,这是一个与Venue同等级的物业。我怎样才能绑定到这个属性?看着RelativeSource,似乎不是我正在寻找的东西。

感谢

回答

2

目前你设置DataContext={Binding Venue}。一种选择是删除它,然后将其他绑定更改为Text="{Binding Venue.VenueName, ...}"等。然后可以使用​​。

另一种方法是使用RelativeSource绑定。例如:

ItemsSource="{Binding Path=States, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}" 

显然取决于StackPanel的父类型。

+0

呼叫良好。不是寻找祖先的大粉丝,因为它将标记结合到自己身上,你永远不会改变任何事物,忘记繁荣。谢谢你。符号,我已经完全忘记了它 – xximjasonxx 2012-02-25 00:17:52