2017-02-22 35 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); 
    } 
} 

第一结合到FileName工作正常,但第二个没有。

如何使它工作?

+0

@Clemens是不是这些[绑定到显式接口实现](http://stackoverflow.com/a/1827579/5246145)? – 3615

+0

@ 3615:我做到了。 – tesicg

+0

我已更新原始帖子。请看一下。 – tesicg

回答

1

如果IEntity.Id是一个明确实现的属性,你应该在你的绑定路径替换IDocumentIEntity

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

如果没有,你应该能够使用通用绑定语法绑定到它:

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