[英]Bind some referenced object properties
我有一本字典:
private Dictionary<int, ICar> _ICarsDic;
對象ICar實際上包含另一個對象列表:
public interface ICar
{
int carId { get; set; }
string carName { get; set; }
Dictionnary<int,IBrandsDetails> brandsDetails { get; set; }
}
我將此CarsDic字典綁定到DataGrid(之前將其轉換為IEnumerable,但這不是問題的重點,因此此處未顯示)。
<DataGrid Name="Cars"
ItemsSource="{Binding}"
SelectedItem="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}, AncestorLevel=2}, Path=SelectedCar, Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Header="Car Id" Binding="{Binding CarId}" IsReadOnly="True" />
<DataGridTextColumn Header="Car Name" Binding="{Binding carName}" IsReadOnly="True" />
</DataGrid.Columns>
我的問題是,我也想顯示BrandsDetails的一些數據(所有汽車都通用),例如徽標。 這個合奏雖然不起作用:
<DataGridTextColumn Header="Full Name" Binding="{Binding BrandsDetails.Logo}" IsReadOnly="True" />
預先感謝您的回答!
我認為以下鏈接將解決您的問題
http://www.dev102.com/2008/03/07/binding-a-wpf-control-to-a-dictionary/
引用
綁定到字典可能很棘手。
聽起來很簡單,但第一次嘗試就無法使用。 通常,當您第一次運行應用程序時,您會看到,而不是為項目創建的漂亮模板,您得到的東西看起來像一對鍵和值。 您的綁定效果很好,您只是沒有想到要綁定到什么。 字典中的每個項目都是一對(鍵,值),而這正是您作為綁定項目獲得的。 您有兩種處理方法,可以更改Binding表達式的標記以包括對Value的引用:
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Value.Text}"></TextBlock>
<TextBlock> = </TextBlock>
<TextBlock Text="{Binding Value.Value}"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
或者可以更改控件的綁定表達式以引用字典的Values屬性:
<ComboBox Height="23" Margin="0,14,9,0" Name="comboBox1"
VerticalAlignment="Top" SelectedValuePath="Key"
ItemsSource="{Binding Items.Values}"
HorizontalAlignment="Right" Width="120">
現在,您已將控件綁定到詞典,萬歲!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.