2017-02-22 9 views
-1

Iはインターフェイスを持っている:WPF:別のインターフェイスから継承するインターフェイスにバインドする方法は?

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

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

Iは、以下のように結合したい:

<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は正常に動作しますが、2番目のファイルは正常に動作しません。

どのように動作させるには?

+0

@Clemens [明示的なインターフェイス実装へのバインディング](http://stackoverflow.com/a/1827579/5246145)ではありませんか? – 3615

+0

@ 3615:私はそれをしました。 – tesicg

+0

元の投稿を更新しました。どうぞご覧ください。 – tesicg

答えて

1

IEntity.Idた場合は、あなたの結合パスにIEntityIDocumentを置き換える必要が明示的に実装するプロパティです:

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

あなたが共通の結合構文を使用してそれと結合することができるはずない場合は、次の

<TextBlock Text="{Binding Path=Id}"/> 
関連する問題