【问题标题】:Silverlight control binding and renderingSilverlight 控件绑定和渲染
【发布时间】:2011-08-23 19:44:26
【问题描述】:
我正在尝试构建一个 Silverlight4 UserControl 来呈现多个测试和测试运行的结果。我想为每个测试显示一个矩形,总结该测试的一次或多次运行的结果。
我能否绑定到一个通用列表,并让 UserControl 包含绘制矩形内容的所有逻辑,具体取决于测试的数量和结果(通过=绿色;失败=红色)?每个结果的宽度取决于测试的数量,因此整个矩形宽度始终保持不变。这是一种用于报告目的的单向绑定。
我不确定这是否可行,或者何时可以调用我的 Render() 方法?
【问题讨论】:
标签:
data-binding
silverlight-4.0
user-controls
【解决方案1】:
我试图想象你想要做什么。您是否想要一个具有多种颜色的矩形来表示测试结果?因此,如果您愿意,可以使用渐变笔刷来管理红色区域的位置。
<Rectangle Width="500">
<Rectangle.Fill>
<GradientBrush>
<!-- These can be managed by your user control -->
<GradientStop Color="Green" Offset=".2999" />
<GradientStop Color="Red" Offset=".3000" />
<GradientStop Color="Green" Offset=".3100" />
</GradientBrush>
</Rectangle.Fill>
</Rectangle>
注意我们如何从 .2999 变为 .3000,这将确保您的渐变呈现像素锐利。因此,您的前 29.99% 的测试结果是“通过”,然后 1% 未通过,然后其余的通过。
因此,出于绑定目的,您需要想办法将颜色和偏移值传递给您的 UserControl,或者使用您当前的通用列表并让 UserControl 根据结果生成 GradientStops。
偏移量会很好用,因为它们是基于百分比的。您的矩形将始终为 500 像素(或任何您喜欢的),并且渐变将随之而来。