Получить имя пути привязки GridViewColumn из ListView?

1

У меня есть xaml-код

<ListView Name="List1" Margin="0,33,0,0"

                ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                ScrollViewer.VerticalScrollBarVisibility="Visible"
    ItemsSource="{Binding Path=Table}" MouseDoubleClick="List1_MouseDoubleClick">

        <ListView.View>

        <GridView x:Name="_gridView" ColumnHeaderTemplate="{StaticResource BlueHeader}">
            <GridViewColumn x:Name="LoyaltyCode"  Header="Code" DisplayMemberBinding="{Binding Path=LoyaltyCode}"/>
            <GridViewColumn x:Name="LoyaltyName" Header="Name" Width="130" DisplayMemberBinding="{Binding Path=LoyaltyName}" HeaderTemplate="{StaticResource BlueHeaderName}"/>
            <GridViewColumn Header="PurProductPonits" DisplayMemberBinding="{Binding Path=PurProductPonits}"/>
            <GridViewColumn Header="PurProductAmount" DisplayMemberBinding="{Binding Path=PurProductAmount}"/>
            <GridViewColumn x:Name="PurServicePonits" Header="PurServicePonits" DisplayMemberBinding="{Binding Path=PurServicePonits}"/>
            <GridViewColumn Header="PurServiceAmount" DisplayMemberBinding="{Binding Path=PurServiceAmount}"/>
            <GridViewColumn Header="RedeemPoints" DisplayMemberBinding="{Binding Path=RedeemPoints}"/>
            <GridViewColumn Header="RedeemAmount  " DisplayMemberBinding="{Binding Path=RedeemAmount}" />

            <GridViewColumn Header="LoyaltyID" DisplayMemberBinding="{Binding Path=LoyaltyID}" Width="0"/>

            <GridView.ColumnHeaderContainerStyle>
                <Style TargetType="{x:Type GridViewColumnHeader}">
                    <Setter Property="IsEnabled" Value="False"/>
                    <Style.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="TextElement.Foreground" Value="Black"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </GridView.ColumnHeaderContainerStyle>
        </GridView>
    </ListView.View>

</ListView>

И код позади

foreach (GridViewColumn column in _gridView.Columns)
{
    if (column.Width == 0)
        continue;

    //ComboBoxItem item = new ComboBoxItem();
    // item.Content=column.Header;
    // item.Tag=column.???;
    // cmbSearch.Items.Add(item);

    cmbSearch.Items.Add(column.Header);
}

Мне нужно заполнить элемент отображения combo box с помощью столбца. Элемент header и value с именем "DisplayMemberBinding Path" Например. Item.Content = Код, item.Tag = LoyaltyCode

  • 0
    не уверен, что вы хотите. элемент отображения здесь - заголовок столбца (который одинаков для всех ячеек в одном столбце), но какой именно элемент значения вы хотите здесь? Вы имеете в виду, что все элементы значения в одном столбце должны быть добавлены как элементы в выпадающем списке?
  • 0
    Спасибо за ответ..точное имя поля БД в каждом столбце должно быть добавлено как значение-Элементы выпадающего списка. Показать код в заголовке, но имя dbField - LoyaltyCode, мне нужно, чтобы LoyaltyCode был добавлен в качестве поля значения ... или просто как я могу получить имя dbField, связанное с колонкой ??
Теги:
xaml
wpf
listview
gridviewcolumn

1 ответ

2

Этот ответ опоздал на год, но то, что вы можете сделать, - это свойство DisplayMemberBinding каждого столбца как объект Binding, и таким образом вы можете получить доступ к свойству Path и получить имя свойства оттуда. Так что-то вроде этого:

    foreach (GridViewColumnHeader column in _gridView.Columns)
    {
        if (column.Width == 0)
            continue;
        ComboBoxItem item = new ComboBoxItem();
        item.Content=column.Header;
        string property = ((System.Windows.Data.Binding)column.DisplayMemberBinding).Path.Path;
        item.Tag= property;
        cmbSearch.Items.Add(item);

        cmbSearch.Items.Add(column.Header);
    }
  • 0
    спасибо за ответ через год. помог мне. Вы можете проверить наличие нуля, если displaymemberbinding равен нулю или какой-либо из путей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню