Silverlight полностью глючит с canvas

#silverlight

#silverlight

Вопрос:

Невероятно, что такой пример кода даже не работает.

Я поместил это внутри сетки, но я не вижу ни одной строки (на самом деле код взят из MSDN):

     <Canvas Height="103" HorizontalAlignment="Left" Margin="30,166,0,0" Name="canvas1" VerticalAlignment="Top" Width="180">
        <Line
X1="0" Y1="10"
X2="5" Y2="10"
Stroke="Black"
StrokeThickness="4" />
    </Canvas>
  

Невероятно, что такая простая вещь, как эта, может быть настолько глючной, так что я что-то пропустил, см. Картинку ниже? (Все остальное в silverlight у меня работает нормально):

введите описание изображения здесь

Обновление: ошибка подтверждена. Совершенно невероятно, что MS это не исправила!

Комментарии:

1. У меня ваш код работает нормально, я вижу маленький черный квадрат. Я предлагаю вам убедиться, что ваша машина обновлена исправлениями и пакетами обновления.

2. Другие подтвердили, что это работает не только ВНЕ CANVAS!

3. Я думаю, вам нужно уточнить это утверждение. Код, который вы показали выше, работает локально, и я не могу воспроизвести то, что вы видите. Обычно это указывает на факторы окружающей среды.

4. Я хотел бы отметить, что внутри Blend это отображается без проблем, но в моей Visual Studio это на самом деле работает не так, как предполагалось. Я думаю, что это не столько ошибка Silverlight, сколько дефект VS. Однако, когда я запускаю проект в VS, он выглядит нормально.

Ответ №1:

Это действительно появляется. Ваша линия представляет собой очень маленькую точку шириной в 5 пикселей. Попробуйте изменить координаты, чтобы нарисовать более длинную линию.

Комментарии:

1. Хорошо, я больше ничего не делаю, см. Картинку выше (я на silverlight 4)

2. его ширина по-прежнему составляет всего 5 пикселей, сделайте X2 = «85»

3. @Mark сказал это правильно. Это все еще 5 пикселей. Я думаю, вам нужно было бы указать ширину и высоту элемента управления line. Попробуйте задать ширину и высоту 200 для элемента управления line и координаты X1 = 0, Y1 = 0 и X2 = 50, Y2 = 50

4. X2 = 85 ничего не меняет

5. @user310291 не могли бы вы, пожалуйста, попробовать то, что я сказал в последнем комментарии?

Ответ №2:

Другие подтвердили, что в последней версии Silverlight это работает только за ПРЕДЕЛАМИ CANVAS! Так что действительно это огромная ошибка.

Комментарии:

1. Отображается во время выполнения и в Blend без проблем, но в VS designer он работает не так, как предполагалось.

2. Совершенно невероятно, что MS это не исправила!

Ответ №3:

Я столкнулся именно с этим, и вот мое решение:

 <Canvas Height="103" Width="180" HorizontalAlignment="Left" Margin="30,166,0,0" Name="canvas1" VerticalAlignment="Top" >
    <Line Height="103" Width="180" X1="0" Y1="10" X2="5" Y2="10" Stroke="Black" StrokeThickness="4" />
</Canvas>
  

Таким образом, вы должны установить одинаковый размер для Line и Canvas. На самом деле, строка помещается туда, куда вы помещаете, но она не отображается, потому что не имеет размера.