2017-02-22 56 views
-1

У меня есть интерфейсы:WPF: Как связать с интерфейсом, который наследуется от другого интерфейса?

public interface IDocument : IEntity 
{ 
    string FileName { get; set; } 
    ... 
} 

public interface IEntity : IComparable 
{ 
    int Id { get; set; } 
    ... 
} 

я хотел бы, чтобы связать следующим образом:

<ItemsControl Grid.Row="0" ItemsSource="{Binding SelectedEventPhotoList}" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch"     
      Name="SelectedListView"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <UniformGrid Rows="1" Columns="3"/> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Path=(documents:IDocument.FileName)}"/> 
       <TextBlock Text="{Binding Path=(documents:IDocument.Id)}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

SelectedEventPhotoList помещается для просмотра модели следующим образом:

public List<IDocument> SelectedEventPhotoList 
{ 
    get { return _selectedEventPhotoList; } 
    set 
    { 
     if (Equals(value, _selectedEventPhotoList)) 
      return; 

     _selectedEventPhotoList = value; 
     RaisePropertyChanged(() => SelectedEventPhotoList); 
    } 
} 

первого связывающий to FileName работает нормально, а второй - нет.

Как заставить его работать?

+0

@Clemens Не эти [привязки к явным реализациям интерфейса] (http://stackoverflow.com/a/1827579/5246145)? – 3615

+0

@ 3615: Я сделал это. – tesicg

+0

Я обновил исходное сообщение. Взгляни, пожалуйста. – tesicg

ответ

1

Если IEntity.Id это явно реализовано свойство следует заменить IDocument с IEntity в вашем пути привязки:

<TextBlock Text="{Binding Path=(documents:IEntity.Id)}"/> 

Если вы не должны быть в состоянии связать его с помощью общего связывания синтаксис:

<TextBlock Text="{Binding Path=Id}"/> 

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

  • Нет связанных вопросов^_^