如何在WPF的列表视图中访问组合框所选值
本文关键字:组合 访问 视图 WPF 列表 | 更新日期: 2023-09-27 18:14:48
如何获取列表视图中显示的组合框的选定值
下面是我的代码: 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 Toolkit网格(http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117)和一系列选定的项目来"解决"我的问题,这可能是一个更干净的解决方案。不能解释GridView的行为,这对我来说很不寻常