【问题标题】:Bind ListView SelectedItem Column MVVM绑定 ListView SelectedItem 列 MVVM
【发布时间】:2018-03-20 04:37:19
【问题描述】:

我有以下 XAML

<ListView ItemsSource="{Binding Franchises, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding SelectedFranchise, Mode=TwoWay}" SelectionMode="Single" Height="150">
    <ListView.View>
        <GridView>
            <GridViewColumn x:Name="FranchiseID" Header="ID" DisplayMemberBinding="{Binding FranchiseID}"/>
            <GridViewColumn Header="Franchise Name" DisplayMemberBinding="{Binding FranchiseName}"/>
        </GridView>
    </ListView.View>
</ListView>

我想将FranchiseID 传递给我的Presenter View Model SelectedFranchise 值。

PresenterViewModel

public class Presenter : ObservableObject
{

    private DataView _Franchises = Controller.BaseballDB.Tables["Franchise"].DefaultView;
    private long _SelectedFranchise;

    public DataView Franchises
    {
        get
        {
            Controller.Refresh();
            _Franchises = Controller.BaseballDB.Tables["Franchise"].DefaultView;
            return _Franchises;
        }
        set
        {
            Controller.Refresh();
            _Franchises = Controller.BaseballDB.Tables["Franchise"].DefaultView;
            RaisePropertyChangeEvent("Franchises");
        }
    }

    public long SelectedFranchise
    {
        get { return _SelectedFranchise; }
        set
        {
            _SelectedFranchise = value;
            Debug.Print(_SelectedFranchise.ToString());
        }
    }
}

现在它给了我一个错误,因为它想将 Selected Item 的整个字符串传递给属性。我已经在网上搜索过,但显然每个人都只想在只有一列的情况下选择一个项目。

【问题讨论】:

    标签: c# wpf xaml listview selecteditem


    【解决方案1】:

    SelectedValuePathSelectedValue 一起使用。请确保 FranchiseIDSelectedFranchise 的 DataType 相同。

    <ListView ItemsSource="{Binding Franchises, UpdateSourceTrigger=PropertyChanged}" SelectedValuePath="FranchiseID" SelectedValue="{Binding SelectedFranchise}" SelectionMode="Single" Height="150">
        <ListView.View>
            <GridView>
                <GridViewColumn x:Name="FranchiseID" Header="ID" DisplayMemberBinding="{Binding FranchiseID}"/>
                <GridViewColumn Header="Franchise Name" DisplayMemberBinding="{Binding FranchiseName}"/>
            </GridView>
        </ListView.View>
    </ListView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-08
      • 2017-08-05
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      相关资源
      最近更新 更多