当将文本设置为属性时,如何为文本添加换行符,即:
<TextBlock Text="Stuff on line1 \n Stuff on line2" />
Run Code Online (Sandbox Code Playgroud)
将其分解为爆炸格式不适合我的特定情况.我需要的是模仿以下内容的一些方法:
<TextBlock>
<TextBlock.Text>
Stuff on line1 <LineBreak/>
Stuff on line2
</TextBlock.Text>
<TextBlock/>
Run Code Online (Sandbox Code Playgroud) 一旦编译完成,它们之间是否存在差异:
delegate { x = 0; }
Run Code Online (Sandbox Code Playgroud)
和
() => { x = 0 }
Run Code Online (Sandbox Code Playgroud)
?
在WPF中,我如何将多个样式应用于FrameworkElement
?例如,我有一个已经有风格的控件.我也有一个单独的风格,我想添加它,而不会吹掉第一个.样式有不同的TargetTypes,所以我不能只用另一个扩展一个.
在C#中,可以为空的原始类型(即bool?
)只是它们对应Nullable<T>
类型的别名,还是两者之间存在差异?
System.Collections.Specialized.NameObjectCollectionBase有两个类似的属性:
string[] AllKeys
NameObjectCollectionBase.KeyCollection Keys
Run Code Online (Sandbox Code Playgroud)
他们提供不同的数据集吗?我什么时候想要使用另一个?
我正在寻找一些有效隐藏继承成员的方法.我有一个继承自公共基类的类库.一些较新的后代类继承了依赖属性,这些属性已成为残留,在使用IntelliSense或在可视化设计器中使用类时可能会有点混乱.
这些类是为WPF或Silverlight 2.0编写的所有控件.我知道ICustomTypeDescriptor
和ICustomPropertyProvider
,但我很确定那些不能在Silverlight中使用.
它不是可用性问题的功能问题.我该怎么办?
更新
我真正想隐藏的一些属性来自不属于我自己的祖先,而且由于我正在设计的特定工具,我不能将成员隐藏在new
操作员身上.(我知道,这太荒谬了)
有没有一种从Visual Studio XML输出生成MSDN样式文档的简单方法?
我没有耐心为它建立一个好的xslt,因为我知道我不是第一个跨过这座桥的人.
此外,我最近尝试设置沙堡,但它真的让我的眼睛交叉.要么我错过了一些重要的过程,要么就是太过牵扯.
我知道那里的人有一个非常好的简单解决方案.
我在这里重申,因为我认为我的格式化使该段非邀请阅读:
我尝试了一下沙堡,但很难设置它.我真正想到的是更简单的事情.
也就是说,除非我不理解沙堡过程.对我来说,为了给测试人员提供一些好的东西,这似乎是一件非常多的额外包袱.
我在哪里可以找到有关Brushes如何实现我自己的System.Windows.Media.Brush的足够信息?我可以处理所有可冻结的行李,但是为了让它起作用,我需要覆盖的并不是很明显.
是的,所以我并不是说我想使用预定义的画笔.我想扩展System.Windows.Media.Brush,这是一个抽象类.这完全是为了我自己的启发.我甚至不确定我能用什么样的刷子.我只是想了解刷子是如何工作的.如:
public AwesomeBrush : Brush
{
protected override Freezable CreateInstanceCore()
{
return new AwesomeBrush();
}
... // concrete brush stuff
}
Run Code Online (Sandbox Code Playgroud) 对于我的第一个也是最令人敬畏的Android项目,我想创建一个主屏幕小部件,其中显示了所有孩子们最近都在讨论的其中一个弧形时钟.
基于RemoteViews的限制,我认为在屏幕上实际绘制它的合适方法是在实际布局中使用ImageView,然后在更新时,创建一个或两个ShapeDrawable并将它们绘制到一个新的创建了位图.然后,将Bitmap设置为ImageView的源.
但是,有一些关于这个过程的东西,我只是不喜欢.以下是我尝试用来更新小部件的代码.我根本没有在屏幕上画任何东西.ImageView具有仅由其src
属性设置的占位符图像.当我不运行代码将其更新到我的绘图时,占位符图像保持不变.所以,我知道这段代码正在做一些事情,显然不是正确的事情.
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Bitmap bitmap = Bitmap.createBitmap(100, 100, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
ShapeDrawable drawable = new ShapeDrawable(new ArcShape(0, 360));
drawable.getPaint().setColor(0xffff0000);
drawable.getPaint().setStrokeWidth(5.0f);
drawable.setIntrinsicWidth(100);
drawable.setIntrinsicHeight(100);
drawable.draw(canvas);
views.setImageViewBitmap(R.id.ImageView01, bitmap);
appWidgetManager.updateAppWidget(appWidgetId, views);
Run Code Online (Sandbox Code Playgroud)
我知道这不容易.那么,我是否正朝着正确的方向前进?
更新
好吧,也许这是太多的信息.我真正想问的问题是:
如果我想在窗口小部件上绘制形状,我应该使用ImageView并从我的ShapeDrawable创建一个位图,还是有更合适的方法来绘制一个受RemoteView约束的窗口小部件?
有没有一种方便的方法可以使用异步函数作为Where
observable上运算符的谓词?
例如,如果我有一个很好的整洁但可能长时间运行的函数定义如下:
Task<int> Rank(object item);
Run Code Online (Sandbox Code Playgroud)
是否有将其传递给Where
异步执行并保持异步执行的技巧?如:
myObservable.Where(async item => (await Rank(item)) > 5)
Run Code Online (Sandbox Code Playgroud)
在过去,当我需要这样做时,我已经使用SelectMany
并将这些结果与原始值一起投影到新类型中,然后根据它进行过滤.
myObservable.SelectMany(async item => new
{
ShouldInclude = (await Rank(item)) > 5,
Item = item
})
.Where(o => o.ShouldInclude)
.Select(o => o.Item);
Run Code Online (Sandbox Code Playgroud)
我认为那是非常难以理解的,但我觉得必须有一个更清洁的方式.
.net ×5
c# ×4
wpf ×3
android ×1
async-await ×1
brush ×1
collections ×1
delegates ×1
lambda ×1
nullable ×1
polymorphism ×1
sandcastle ×1
silverlight ×1
styles ×1
xaml ×1
xml-comments ×1
xslt ×1