[英]How to bind the whole object instead of just a property to controls of a combobox-list in C#/WPF/XAML?
我有這個xaml代碼:
<ComboBox Height="23" HorizontalAlignment="Left" Margin="598,0,0,16" x:Name="comboBoxActivityRecordingOrder" VerticalAlignment="Bottom" Width="248" SelectedItem="{Binding SelectedItem.t.activityrecordingorder, ElementName=listViewTasks, UpdateSourceTrigger=PropertyChanged}" SelectionChanged="comboBoxActivityRecordingOrder_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid Height="23" Width="Auto" ShowGridLines="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- multi column combo box http://stackoverflow.com/questions/23893348/wpf-multicolumn-combobox -->
<TextBlock Grid.Column="0" Text="{Binding activityrecordingordertype.code, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Column="1" Text="{Binding banumber, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Column="2" Text="{Binding ***, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource ActivityRecordingOrderConverter}}" />
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
在第三列中,我必須顯示一個字符串,該字符串可以使用ActivityRecordingOrderConverter從整個對象生成。 要把整個對象交給轉換器,我必須加什么符號? 我嘗試了“這個”,“自我”,什么也沒做。 都行不通。
要直接綁定到綁定源,您可以簡單地保留路徑。 更明確地說,您可以指定一個空字符串或單個點( .
)。 在屬性路徑語法中,為lone .
是一個特殊字符,表示“當前對象”。
{Binding Path=''}
{Binding Path=.}
{Binding Converter={...}}
還有這是值得了解的另一個“特殊”的路徑字符:使用/
告訴綁定引擎鑽入當前項目前面的集合,其中當前項是集合的默認指定的在ICollectionView
。 如果單獨使用,則前面的集合將只是綁定源本身。
例:
<ListBox ItemsSource="{Binding Items}"
IsSynchronizedWithCurrentItem="True" />
<TextBlock Text="{Binding Items/Name}" />
在這里,綁定到Items/Name
告訴綁定引擎“綁定到Items
當前所選項目的Name
。將IsSynchronizedWithCurrentItem
設置為true
告訴ListBox
將集合視圖中的所選項目與所選列表框項目同步。結束結果是該文本塊顯示了列表中選擇的任何項目的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.