wpf - привязать ширину метки к вычисляемой длине - PullRequest
0 голосов
/ 12 ноября 2010

Если бы у меня была метка на виде, для которой я хотел бы иметь ширину, равную ширине двух столбцов в одной из моих сеток на одном и том же виде, как бы я настроил привязку без использования конвертера? Должен ли я использовать свойства для предварительного расчета и сохранения значения? Я предполагаю, что если размер сетки представления изменится, то размер этой метки также изменится, чтобы соответствовать новой ширине двух столбцов.

А куда мне поставить эту логику? Я пытаюсь следовать шаблону MVVM, но вижу, что многие потоки о «конвертерах в MVVM» говорят о том, чтобы поместить логику в модель представления.

Я попытался реализовать это поведение с помощью свойств зависимости на моем виде, поскольку моя модель представления технически не знает моего представления (так как же моя модель представления узнает, насколько широки мои столбцы в настоящее время?). Это идет вразрез с тем, что я прочитал в Интернете, хотя. При реализации этого поведения я заметил, что я не могу ссылаться на мои столбцы по имени, если мое свойство не является статическим, но свойства зависимости являются статическими, поэтому я не уверен, как перетасовывать свои значения без создания дополнительных свойств для хранения значений.

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

1 Ответ

1 голос
/ 12 ноября 2010

Мое эмпирическое правило: если это связано с "View", то держите его подальше от ViewModel.Из вашего описания это звучит так, как будто оно связано только с представлением, поэтому я просто использовал бы логику в коде или конвертере.

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

Так что мой совет - конвертеры ... если это связано с View, тогда не стесняйтесь использовать конвертеры и Codebehind ... на самом деле вы должны использовать их, а не ViewModel.

Это помогает?

...