我有一个显示搜索框搜索结果的列表视图。加载窗口时,数据库中的所有数据都显示在列表视图中 - “这很好”。
但是当我搜索事物时,视图模型中的变量会更改并存储新数据,但列表视图不会显示来自变量的新数据。
列表视图的 XAML 代码
<ListView x:Name="itemsListView" ScrollViewer.CanContentScroll="True"
ItemsSource="{Binding Rows, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"
Grid.Row="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="40,10,40,10"
FlowDirection="RightToLeft" IsSynchronizedWithCurrentItem="True" SelectedIndex="1">
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn DisplayMemberBinding="{Binding BankName}"
Width="250"
Header="bank name"/>
<GridViewColumn DisplayMemberBinding="{Binding Credit}"
Header="credit"
Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding IsActive}"
Header="statue"
Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Notes}"
Header="notes"
Width="230"/>
</GridView>
</ListView.View>
</ListView>
查看型号代码
class BanksVM
{
private ObservableCollection<BanksListVM> m_Rows;
public ObservableCollection<BanksListVM> Rows
{
get { return m_Rows; }
set { m_Rows = value; }
}
private string _BanksSearchBox;
public string BanksSearchBox
{
get { return _BanksSearchBox; }
set {
_BanksSearchBox = value;
SearchInBanksMethod();
}
}
//set all data to listview
public BanksVM()
{
Rows = new ObservableCollection<BanksListVM>();
Rows.Clear();
List < Banks > bankslist = new List<Banks>();
Banks banks = new Banks();
bankslist = banks.GetAllBanks();
foreach (Banks b in bankslist)
{
string IsActive = "";
if (b.IsActive == true)
IsActive = "open";
else
IsActive = "closed";
Rows.Add(new BanksListVM
{
ID = b.ID,
BankName = b.BankName,
IsActive = IsActive,
Credit = b.Credit,
Notes = b.Notes
});
}
}
// refresh listview method
public void SearchInBanksMethod() {
Rows = new ObservableCollection<BanksListVM>();
Rows.Clear();
List<Banks> bankslist = new List<Banks>();
search Search = new search();
bankslist = Search.SearchInBanks(_BanksSearchBox);
foreach (Banks b in bankslist)
{
string IsActive = "";
if (b.IsActive == true)
IsActive = "open";
else
IsActive = "closed";
Rows.Add(new BanksListVM
{
ID = b.ID,
BankName = b.BankName,
IsActive = IsActive,
Credit = b.Credit,
Notes = b.Notes
});
}
}
}
重新分配 ObservableCollection 时,不会通知 Binding 新的属性值。
在 中SearchInBanksMethod
,删除
Rows = new ObservableCollection<BanksListVM>();
并且只使用
Rows.Clear();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句