我有一个ListBox可能有很多行的模板化DB记录,包括一个Image,绑定到一个ObservableCollection<MyItem>.有时收藏可以容纳数千件物品.
性能很好,但滚动是默认的跳跃行为.我希望它有平滑的滚动,所以我取消选中ScrollViewer.CanContentScroll.
现在我有平滑的滚动,但性能很可怕:数据在一个单独的线程中检索,并且线程快速完成,但结果显示在中需要10-20秒ListBox.我假设这是因为取消选中ScrollViewer.CanContentScroll将底层更改VirtualizingStackPanel为常规StackPanel,因此在显示结果之前加载整个集合.
所以我的问题是:如何在不牺牲VirtualizingStackPanel行为和性能的情况下保持平滑滚动?
我不明白Azure数据工厂中数据流和管道之间的区别。
我已经阅读并看到 DataFlow 可以在不编写任何代码行的情况下转换数据。
但我已经做了一个管道,这是完全相同的事情。
谢谢
所以我得到以下html:
<ul>
<li><a href="#">test</a></li>
/
<li><a href="#">test</a></li>
/
<li><a href="#">test</a></li>
/
<li><a href="#">test</a></li>
<ul>
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这是由分叉的Plone扩展产生的,我无法改变输出.该列表在不同页面上具有不同数量的元素.
我需要做的就是删除列表元素之间的斜线.到目前为止我无法想出一个好的解决方案.
使用Javascript或jQuery有一个简单的强大解决方案吗?
我今天遇到了一件有趣的事情,我以前从未注意过.似乎SQL和LINQ对AlphaNumeric字符串的顺序不同.
数据表包含行:A G 6 P 1 D J 2 T Z 9 F 0
如果我在SQL中执行Order By,我会收到以下结果:A D F G J P T Z 0 1 2 6 9
现在考虑这个LINQ示例:
class Program
{
static void Main(string[] args)
{
var list = new List<string>()
{
"A",
"G",
"6",
"P",
"1",
"D",
"J",
"2",
"T",
"Z",
"9",
"F",
"0"
};
Console.WriteLine("Default Order:");
list.ForEach(s => Console.WriteLine(s));
Console.WriteLine();
Console.WriteLine("Sorted Order:");
foreach (string s in list.OrderBy(f => f))
{
Console.WriteLine(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出为0 1 2 …
我对Durandal很新.我对KnockoutJS有一点经验.我试图从一个从php文件中检索到的json填充一个observableArray.然后我尝试将数组加载到表中.在首次加载页面时将数据加载到表中似乎存在问题.我执行一个system.log(客户)只是为了确保数据在observableArray中.当我刷新页面时,数据被加载到表中,就像我想要的那样.似乎observableArray正在填充,但视图未更新.
我想知道我错误的是它没有加载到页面的第一个加载.这是我和durandal一起玩的测试网站:http://dev.codeplanetapps.com/spa/ .加载后,点击"客户".有问题的页面是http://dev.codeplanetapps.com/spa/#/customers.当直接加载该页面时,它工作正常,但是当我从主页面加载应用程序然后切换到客户时,它不会正确加载表.在此先感谢您的帮助.
这是观点:
<div>
<!-- Form to add new customer -->
<form class="form-inline customerForm">
<span>Add New Customer</span>
<input type="text" data-bind="value: inputName" placeholder="Name" />
<input type="text" class="date input-small" data-bind="value: inputDOB" placeholder="Date of Birth" />
<input type="text" class="input-small" data-bind="value: inputPhone" placeholder="Phone" />
<input type="text" data-bind="value: inputEmail" placeholder="Email" />
<button type="submit" class="btn btn-primary" data-bind="click: submitCustomer">Add</button>
</form>
<table class="table table-hover table-bordered customerTable">
<thead>
<tr>
<th>Name</th>
<th>DOB</th>
<th>Phone Number</th>
<th>Email</th>
<th></th>
</tr>
</thead>
<tbody data-bind="foreach: customers">
<tr>
<td data-bind="text: name"></td> …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Image Manager WPF应用程序.我有一个带有以下ItemsTemplate的ListBox:
<Grid x:Name="grid" Width="150" Height="150" Background="{x:Null}">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="27.45"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Border Margin="5,5,5,5.745" Grid.RowSpan="2" Background="#FF828282" BorderBrush="{DynamicResource ListBorder}" CornerRadius="5,5,5,5" BorderThickness="1,1,2,2" x:Name="border">
<Grid>
<Viewbox Margin="0,0,0,21.705">
<Image Width="Auto" Height="Auto" x:Name="picture" Source="{Binding Path=FullName}" />
</Viewbox>
<TextBlock Height="Auto" Text="{Binding Path=Name}" TextWrapping="Wrap" x:Name="PictureText" HorizontalAlignment="Left" Margin="70,0,0,0" VerticalAlignment="Bottom" />
</Grid>
</Border>
</Grid>
Run Code Online (Sandbox Code Playgroud)
请注意,"Image"控件绑定到"FullName"属性,该属性是表示JPG的绝对路径的字符串.
一些应用程序功能要求我更改JPG文件(移动,重命名或删除).当我尝试这样做(当前尝试移动文件)时,我收到一个IOException:"进程无法访问该文件,因为它正由另一个进程使用." 锁定文件的进程是我的WPF应用程序.
我做了一些在线搜索,发现了几个帖子,表明图片特别是放下他们的资源有困难.我尝试过以下方法:
我还能尝试什么?我想在ItemsTemplate中找到对Image对象的引用并尝试处理Image,但我无法弄清楚如何获取引用.
我读到的一个可能的解决方案是创建图像的副本而不是实际的图像,但由于绑定是文件名而不是实际的图像我不知道我是否可以使这个工作.
任何帮助或建议将非常感激.
wpf ×2
c# ×1
durandal ×1
file-io ×1
javascript ×1
jquery ×1
knockout.js ×1
linq ×1
listbox ×1
performance ×1
scroll ×1
sql ×1
sql-order-by ×1
text ×1