簡體   English   中英

如何在WPF的Listview中訪問組合框選擇的值?

[英]How to access combobox selected value inside in Listview in WPF?

如何獲取列表視圖中存在的組合框的選定值。

這是我的代碼:

cbPriority是我的組合框的名稱。

<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="-1094,0,2,24" RenderTransformOrigin="0.621,0.497" MinHeight="750" MinWidth="650">
    <ListView Name="lvShowSearching" ItemsSource="{Binding Path=.}" MinHeight="300" MinWidth="400" RenderTransformOrigin="2.25,4" Margin="1129,213,26,187" VerticalAlignment="Center" BorderThickness="2" BorderBrush="#FF90A1CD" Background="White" >
        <ListView.View>
            <GridView>
                <GridViewColumn Width="0" DisplayMemberBinding="{Binding KeywordID}">
                    <ItemsPanelTemplate>
                        <StackPanel Visibility="Hidden"></StackPanel>
                    </ItemsPanelTemplate>
                </GridViewColumn>
                <GridViewColumn Header="Publication" Width="100" DisplayMemberBinding="{Binding PublicationName}" />
                <GridViewColumn Header="Total Records" Width="100" DisplayMemberBinding="{Binding TotalRecords}" />
                <GridViewColumn Header="Records Imported" Width="100" DisplayMemberBinding="{Binding TotalRecordsImported}" />
                <GridViewColumn Header="Status" Width="100" DisplayMemberBinding="{Binding Status}" />
                <GridViewColumn Header="Priority" Width="100">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox Name="cbPriority" Width="80" Height="22">
                                <ComboBoxItem IsSelected="True">1</ComboBoxItem>
                                <ComboBoxItem>2</ComboBoxItem>
                                <ComboBoxItem>3</ComboBoxItem>
                                <ComboBoxItem>4</ComboBoxItem>
                                <ComboBoxItem>5</ComboBoxItem>
                                <ComboBoxItem>6</ComboBoxItem>
                                <ComboBoxItem>7</ComboBoxItem>
                                <ComboBoxItem>8</ComboBoxItem>
                                <ComboBoxItem>9</ComboBoxItem>
                                <ComboBoxItem>10</ComboBoxItem>
                            </ComboBox>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>
    <Button Content="Add Filter" HorizontalAlignment="Left" Margin="1761,113,0,0" VerticalAlignment="Top" Width="94" Click="Filter_Click"/>
</Grid>

在視圖模型中創建一個新屬性,以及其他屬性,例如KeywordID,PublicationName,TotalRecords,Status等。

    public object SelectedComboItem { get; set; }

並將其綁定到ComboBox selecteditem

    <ComboBox Name="cbPriority" Width="80" Height="22" 
              SelectedItem="{Binding SelectedComboItem}">

或更好的名字是

    public object SelectedPriority { get; set; }

和綁定

    <ComboBox Name="cbPriority" Width="80" Height="22" 
              SelectedItem="{Binding SelectedPriority}">

如果您想要一個int屬性,則可以選擇

public int SelectedPriority { get; set; }

<ComboBox Name="cbPriority"
          Width="80"
          Height="22"
          xmlns:sys="clr-namespace:System;assembly=mscorlib"
          SelectedItem="{Binding SelectedPriority,FallbackValue=1}">
    <sys:Int32 >1</sys:Int32>
    <sys:Int32>2</sys:Int32>
    <sys:Int32>3</sys:Int32>
    <sys:Int32>4</sys:Int32>
    <sys:Int32>5</sys:Int32>
    <sys:Int32>6</sys:Int32>
    <sys:Int32>7</sys:Int32>
    <sys:Int32>8</sys:Int32>
    <sys:Int32>9</sys:Int32>
    <sys:Int32>10</sys:Int32>
</ComboBox>

將組合框綁定到值收集

綁定到集合而不是xaml中的靜態值

在與屬性SelectedPriority相同的類中創建一個屬性,並相應地對其進行初始化

public static IEnumerable<int> Priorities { get; set; }

綁定到組合框為

<ComboBox Name="cbPriority"
          Width="80"
          Height="22"
          SelectedItem="{Binding SelectedPriority,FallbackValue=1}"
          ItemsSource="{Binding Priorities}" >

或者如果要將組合框綁定到所有通用值列表,則為相同的對象創建一個靜態屬性

例如

namespace CSharpWPF
{
    class MyClass
    {
        static MyClass()
        {
            Priorities = Enumerable.Range(1, 10);
        }

        public static IEnumerable<int> Priorities { get; set; }
    }
}

這樣綁定

<ComboBox Name="cbPriority"
          Width="80"
          Height="22"
          xmlns:l="clr-namespace:CSharpWPF"
          SelectedItem="{Binding SelectedPriority,FallbackValue=1}"
          ItemsSource="{Binding Source={x:Static l:MyClass.Priorities}}" >

我在示例中添加了名稱空間,以使用x:Static顯示正確的綁定,您可以選擇擁有自己的名稱空間

我通過使用WPF工具包網格( http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117 )和一系列選定項“解決了”我的問題,無論如何這可能是一種更干凈的解決方案。 沒有解釋GridView的行為,這對我來說很不尋常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM