C# 绑定ListView以从另一个ListView筛选所选项目

C# 绑定ListView以从另一个ListView筛选所选项目,c#,wpf,xaml,listview,textbox,C#,Wpf,Xaml,Listview,Textbox,我正在开发的WPF应用程序中有两个ListView项。它们都连接到我的应用程序中的PresenterViewModel中的dataset 我最初的想法是将我的列表视图中的SelectedItem加载到文本框中,然后为第二个列表视图启动一个过滤器 然而,我遇到了一个问题:我想按数字过滤,而TextBox似乎只想接收文本。有解决办法吗 这是我的XAML <Grid Margin="5,2,5,2" Height="350"> <Grid.ColumnDefinitions&

我正在开发的WPF应用程序中有两个
ListView
项。它们都连接到我的应用程序中的
Presenter
ViewModel中的
dataset

我最初的想法是将我的
列表视图中的
SelectedItem
加载到
文本框中,然后为第二个
列表视图启动一个过滤器

然而,我遇到了一个问题:我想按数字过滤,而
TextBox
似乎只想接收文本。有解决办法吗

这是我的XAML

<Grid Margin="5,2,5,2" Height="350">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <ListView x:Name="TypeView" Grid.Column="0" ItemsSource="{Binding CashActivityTypes}" Margin="0,0,10,0">
        <ListView.View>
            <GridView>
                <!--This is the column I want to get -->
                <GridViewColumn Header="Sequence" DisplayMemberBinding="{Binding Sequence}" Width="75"/>
                <GridViewColumn Header="Activity Type" DisplayMemberBinding="{Binding Type}" Width="200"/>
                <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Description}" Width="Auto"/>
            </GridView>
        </ListView.View>
    </ListView>
    <ListView Grid.Column="1" Margin="10,2,0,2">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Sequence" Width="75"/>
                <GridViewColumn Header="Activity" Width="200"/>
                <GridViewColumn Header="Description" Width="Auto"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>
<Grid Margin="5,2,5,2">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <TextBox Text="{Binding SelectedItem.Sequence, ElementName=TypeView, UpdateSourceTrigger=PropertyChanged}" Width="150" HorizontalAlignment="Left"/>
    <Button Grid.Column="1" Content="Adjust Daily Cash Activity" MinWidth="150" Height="20" HorizontalAlignment="Right"/>
</Grid>

您可以在第一个listview selectedItem属性上对VievModel执行双向绑定:

private <TYPE> _CashActivityTypeSelected;

public <TYPE> CashActivityTypeSelected 
{
get
 {
   return _CashActivityTypeSelected;
 }
set
{
  _CashActivityTypeSelected=value; 
  FilterMySecondCollectionView(value);
 };
private\u已选择现金活动类型;
已选择公共现金活动类型
{
得到
{
return\u CashActivityTypeSelected;
}
设置
{
_CashActivityTypeSelected=值;
FilterMySecondCollectionView(值);
};
在xaml中:

<ListView SelectedItem="{Binding CashActivityTypeSelected, mode=TwoWay}" x:Name="TypeView" Grid.Column="0" ItemsSource="{Binding CashActivityTypes}" Margin="0,0,10,0">
        <ListView.View>
            <GridView>
                <!--This is the column I want to get -->
                <GridViewColumn Header="Sequence" DisplayMemberBinding="{Binding Sequence}" Width="75"/>
                <GridViewColumn Header="Activity Type" DisplayMemberBinding="{Binding Type}" Width="200"/>
                <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Description}" Width="Auto"/>
            </GridView>
        </ListView.View>
    </ListView>


然后在
FilterMySecondCollectionView(对象t)中
您可以根据所选对象应用所需的任何筛选器。

Hm,它之所以称为文本框是因为:)。也许您可以使用转换器将字符串解析为数字,或者在视图模型中进行转换/解析。此外,还有许多数字文本框控件,它们周围仅接受数字。我正在使用XCeed toolkit:,谢谢ps这可能会有帮助。我刚刚尝试过这样做,但是,调用
short
TypeSequence
,但它没有通过。我如何获取单个列?这样做,您将始终在CashActivityTypeSelected属性中拥有当前选定的对象。CashActivityTypeSelected。序列应该是您的列。请在尝试此操作家里有我正在处理的棒球数据库,没有骰子。