如何将整个对象而不仅仅是一个属性绑定到 C#/WPF/XAML 中组合框列表的控件?

mar*_*000 3 c# wpf xaml binding

我有这个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>
Run Code Online (Sandbox Code Playgroud)

在第三列中,我必须显示一个字符串,我可以使用 ActivityRecordingOrderConverter 从整个对象生成该字符串。我必须在 *** 处放置什么才能将整个对象提供给转换器?我尝试了“这个”,“自我”,什么也没放。一切都不起作用。

Mik*_*bel 10

要直接绑定到绑定源,您只需关闭该路径即可。为了更明确,您可以指定空字符串或单个点 ( .)。在属性路径语法中,一个单独的.是一个特殊字符,表示“当前对象”。

{Binding Path=''}
{Binding Path=.}
{Binding Converter={...}}
Run Code Online (Sandbox Code Playgroud)

还有另一个值得了解的“特殊”路径字符:using/告诉绑定引擎深入到前一个集合中的当前项 ,其中当前项是集合的 default 指定的项ICollectionView。当单独使用时,前面的集合只是绑定源本身。

例子:

{Binding Path=''}
{Binding Path=.}
{Binding Converter={...}}
Run Code Online (Sandbox Code Playgroud)

这里,绑定 toItems/Name告诉绑定引擎,“绑定到 中Name当前所选项目的Items。设置IsSynchronizedWithCurrentItemtotrue告诉将ListBox集合视图中的所选项目与所选列表框项目同步。最终结果是文本块显示列表中选择的任何项目的属性。