2010-09-01 3 views
1

Я просто смотрел видео WPF типа «как», называемое How Do I: Use Attached Properties to Store Extra Data in WPF, и он описывал, что делать, если вы хотите связать две части информации с помощью одного элемента управления. Если вы хотите разместить одну часть информации, они говорят, что используют свойство Tag.Сохраняет информацию в несвязанных прикрепленных свойствах запаха кода?

<Grid> 
    <TextBox Tag="innerData"> 
</Grid> 

Ярмарка достаточно.

Но тогда они говорят: «Что произойдет, если вы хотите сохранить вторую часть данных, скажем, целое?» Решением, говорят, является использование неиспользуемого прикрепленного имущества.

<Grid> 
    <TextBox Tag="innerData" Canvas.Top="55"> 
</Grid> 

Они говорят, что это в гриде, никаких проблем! Я говорю «Блех!» Это поражает меня как крайне неприятный ... и довольно вводящий в заблуждение для чтения. Это обычная практика?

+1

«Говорят, потому что это в гриде, никаких проблем!» - У меня есть немного женщин в моем рту после этого ... – Goblin

ответ

2

Это быстро и легко, но определенно предпочтительнее определять свои собственные прикрепленные свойства или настраиваемый элемент управления для обработки этих ситуаций. Это тот тип вещей, который подходит для прототипов или быстрых одноразовых приложений, но не должен быть выполнен, если код будет иметь реальный срок службы, который потребует обслуживания по дороге.

+0

Да, я имею в виду, для одноразовых приложений, которые вы собираетесь выбросить, конечно; все идет, правда? Но я говорю о реальных приложениях; Я имею в виду, в этом весь смысл видео: «Как мне: использовать прикрепленные свойства для хранения дополнительных данных в WPF», и это был ответ. Поразило меня как уродливое. – Beska

3

Да, это запах.

Я не уверен, что это распространено - я никогда не видел его раньше.

Честно говоря, я считаю, что Tag является салоном, одобренным каркасом.

+0

Я согласен, но я видел это достаточно часто, чтобы принять его. Мне это показалось хуже, потому что у Tag на самом деле нет никакой коннотации, в то время как Canvas.Top определенно делает. – Beska

1

Не лучшая практика.

Я всегда придерживаюсь мнения, код (включая Xaml) написан для чтения человеком.

Было бы неплохо провести исследование, чтобы выяснить, кто использует это имущество и для чего.

0

Этот метод может быть в режиме реального времени. Использование этого говорит вам: «Мне больше не нужно тратить время на изучение этих учебных материалов».