我有一组带有附加命令和逻辑的控件,它们以相同的方式不断重用.我决定创建一个包含所有常用控件和逻辑的用户控件.
但是我还需要控件才能保存可以命名的内容.我尝试了以下方法:
<UserControl.ContentTemplate>
<DataTemplate>
<Button>a reused button</Button>
<ContentPresenter Content="{TemplateBinding Content}"/>
<Button>a reused button</Button>
</DataTemplate>
</UserControl.ContentTemplate>
Run Code Online (Sandbox Code Playgroud)
但是,似乎无法命名放置在用户控件内的任何内容.例如,如果我以下列方式使用控件:
<lib:UserControl1>
<Button Name="buttonName">content</Button>
</lib:UserControl1>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
无法在元素"Button"上设置Name属性值"buttonName".'Button'属于元素'UserControl1'的范围,在另一个范围内定义时,已经注册了一个名称.
如果我删除buttonName,然后编译,但我需要能够命名内容.我怎样才能做到这一点?
我正在编写适用于一系列数字数据的算法,有时,系列中的值必须为null.但是,由于此应用程序对性能至关重要,因此我避免使用可空类型.我已经对这些算法进行了性能测试,专门比较了使用可空类型和非可空类型的性能,在最好的情况下,可空类型的速度慢了2倍,但往往差得多.
最常用的数据类型是double,目前选择null的替代方法是double.NaN.但是我知道这不是NaN值的确切用途,所以我不确定是否有任何问题,我无法预见,最佳做法是什么.
我有兴趣找出以下数据类型的最佳空替代品:double/float,decimal,DateTime,int/long(尽管其他数据类型非常受欢迎)
编辑:我想我需要澄清我对性能的要求.数字数据的演出通过这些算法在几个小时的时间内处理.因此,虽然例如10毫秒或20毫秒之间的差异通常是微不足道的,但在这种情况下,它确实对所花费的时间产生了重大影响.
如何加入2个相等长度的列表(以产生相等长度的第3个列表),其中我不想指定条件,而只是依赖于2个列表中的项目顺序.
我怎么加入:
{1,2,3,4} with {5,6,7,8}
Run Code Online (Sandbox Code Playgroud)
生产:
{{1,5}, {2,6}, {3,7}, {4,8}}
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
from i in new []{1,2,3,4}
from j in new []{5,6,7,8}
select new { i, j }
Run Code Online (Sandbox Code Playgroud)
但这会产生交叉连接.当我使用join时,我总是需要指定"on".