Я пытаюсь представить, что ты пытаешься сделать.Вы хотели один прямоугольник с несколькими цветами, представляющими результаты теста?Итак, если вы хотите, то вы можете использовать градиентную кисть для управления расположением красных зон.
<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 на основе результатов.
Смещения будут работать отлично, так как они основаны на процентах.Ваш прямоугольник всегда будет 500px (или что угодно), и будет следовать градиент.