2017-02-22 2 views
-1

Ich habe eine Schnittstellen:WPF: Wie bindet man an Schnittstelle, die von einer anderen Schnittstelle erbt?

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

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

Ich möchte als folgendes binden:

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

Die SelectedEventPhotoList Modell anzuzeigen platziert ist wie folgend:

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

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

der erste Bindungs zu Dateiname funktioniert gut, aber die zweite nicht.

Wie funktioniert es?

+0

@Clemens Sind das nicht [Bindungen an explizite Schnittstellenimplementierungen] (http://stackoverflow.com/a/1827579/5246145)? – 3615

+0

@ 3615: Ich habe es getan. – tesicg

+0

Ich habe den ursprünglichen Post aktualisiert. Bitte schau es dir an. – tesicg

Antwort

1

Wenn IEntity.Id ist eine explizit implementiert Eigenschaft Sie IDocument mit IEntity in Ihrem verbindlichen Pfad ersetzen sollten:

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

Wenn nicht Sie sollten in der Lage sein, zu binden, um es mit der gemeinsamen verbindlichen Syntax:

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