2012-02-24 3 views
0

ли модель представления с двумя свойствами: Место и государства место находится текущий вид, что выбирается и отображается через форму (ниже):Родитель Свойство Binding

<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> 

Штаты не является членом места проведения, однако это свойство находится на том же уровне, что и Место. Как я могу привязать это свойство? Посмотрел на RelativeSource, похоже, не совсем то, что я ищу.

Благодаря

ответ

2

В настоящее время вы устанавливаете DataContext={Binding Venue}. Один из вариантов заключается в том, чтобы удалить это, а затем изменить другие привязки на Text="{Binding Venue.VenueName, ...}" и т. Д. Затем вы можете использовать ItemsSource="{Binding Path=States, ..."}.

В качестве альтернативы может использоваться привязка RelativeSource. Что-то вроде:

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

в зависимости от типа родителя StackPanel, очевидно.

+0

Хороший звонок. Не большой поклонник поиска предков, поскольку он соединяет разметку с самим собой, вы когда-либо меняете что-либо и забываете, бум. Спасибо за . но я совсем забыл об этом – xximjasonxx

Смежные вопросы