我目前正在使用一个可观察的集合来存储我的ListView数据对象.将新对象添加到集合中工作正常,listView正确更新.但是,当我尝试更改集合中对象的某个属性时,listView将无法正确更新.例如,我有一个可观察的集合DataCollection.我试试
_DataCollections.ElementAt(count).Status = "Active";
Run Code Online (Sandbox Code Playgroud)
由于按下按钮,我在长时间操作之前执行此更改.listView不会反映更改.所以我补充一下myListView.Items.Refresh(); 这是有效的,但是在button_click方法完成之前,listView不会刷新,这在那时是不行的.例如:
button1_Click(...)
{
_DataCollections.ElementAt(count).Status = "Active";
myListView.Items.Refresh();
ExecuteLongOperation();
_DataCollections.ElementAt(count).Status = "Finished";
myListView.Items.Refresh();
}
Run Code Online (Sandbox Code Playgroud)
状态将永远不会转到"活动",它将在方法完成后直接转到"已完成".我也尝试使用这样的调度程序:
button1_Click(...)
{
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Active"; myListView.Items.Refresh(); });
ExecuteLongOperation();
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Finished"; myListView.Items.Refresh(); });
}
Run Code Online (Sandbox Code Playgroud)
但是,这似乎也不正常.任何提示或想法将不胜感激.
使用此处的代码:https://libbits.wordpress.com/2011/05/17/check-if-ip-is-within-range-specified-in-cidr-in-java/
// Step 1. Convert IPs into ints (32 bits).
// E.g. 157.166.224.26 becomes 10011101 10100110 11100000 00011010
int addr = (( 157 << 24 ) & 0xFF000000)
| (( 166 << 16 ) & 0xFF0000)
| (( 224 << 8 ) & 0xFF00)
| ( 26 & 0xFF);
// Step 2. Get CIDR mask
int mask = (-1) << (32 - 10);
// Step 3. Find lowest IP address
int lowest = addr & mask;
// …Run Code Online (Sandbox Code Playgroud) 我有一个字符串列表,我需要解析名称和版本,例如一些字符串看起来像这样:
应用程序名称1.2.5
AppName 7.8.b
应用程序名称7.0
我希望有两个字符串列表,其中一个带有应用程序名称,另一个带有版本号,因此一个列表是:
应用名称
AppName
应用名称
然后另一个列表将是
1.2.5
7.8.b
3.0
我曾尝试使用空格来分割字符串,但如果名称始终位于索引0并且版本始终位于索引1中,那么这将是最简单的.所以我尝试了"\\ d"(按数字分割),但是不像我想的那样工作.任何帮助将不胜感激,并提前感谢