Восстановление пространства из части DescriptionViewer полей данных в DataForm набора инструментов Silverlight - PullRequest
0 голосов
/ 04 декабря 2009

DescriptionViewer часть DataField используется для отображения свойства Description System.ComponentModel. DisplayAttribute в качестве всплывающей подсказки в сгенерированном виде. Я не хочу использовать эту возможность, и хотя могу убедиться, что элемент пользовательского интерфейса не виден, используя стиль для установки DescriptionViewerVisibility в Свернутый или путем установки DescriptionViewerStyle для нулевого значения, как показано ниже, в макете DataField еще есть место, зарезервированное для этого элемента.

<Style x:Key="DataFieldStyle1" TargetType="dataFormToolkit:DataField">
    <Setter Property="DescriptionViewerVisibility" Value="Collapsed"/>
    <Setter Property="DescriptionViewerStyle" Value="{x:Null}" />
</Style>

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

Я использую System.Windows.Controls.Data. DataForm.Toolkit, версия = 2.0.5.0 из октября 2009 г. набора Silverlight Toolkit в РИА WCF Услуги Beta Business Application проекта Silverlight 3. Я использую Visual Studio 2008 SP1. Я знаю, что в ноябре 2009 года выйдет релиз, но я не вижу упоминаний об этом изменении в примечаниях к выпуску.

Ответы [ 2 ]

1 голос
/ 04 декабря 2009

Альтернативное решение - использовать DataForm Label и элемент управления для отображения вашего поля.

Вместо того, чтобы использовать DataField, подобный этому, и в конечном итоге иметь место для DescriptionViewer

<dataControls:DataField>
    <TextBox Text="{Binding FirstName, Mode=TwoWay}" />
</dataControls:DataField>

Вы можете использовать этот код, и у вас не будет DescriptionViewer

<dataInput:Label Target="{Binding ElementName=tbFirstName}" />
<TextBox x:Name="tbFirstName" Text="{Binding FirstName, Mode=TwoWay}" />

С этим решением вы потеряете сгенерированный макет, который поставляется вместе с DataForm, но вы можете легко сделать это с помощью простой сетки

0 голосов
/ 04 декабря 2009

Используя Reflector, я вижу, что метод DataField.OnApplyTemplate вызывает закрытый метод с именем GenerateUI , который использует обычный код для создания Grid со столбцом для DescriptionViewer, и я Я не могу найти способ предотвратить это, не сделав какой-то очень низкий уровень взлома .NET clr, который был бы неуместен. Я что-то здесь упускаю?

Я начинаю приходить к выводу, что вам нужно либо очень близко придерживаться поведения по умолчанию этих элементов управления Silverlight Toolkit, если вы хотите извлечь выгоду из предполагаемого прироста производительности. Что-нибудь еще, кроме довольно тривиальной настройки, на данный момент кажется неполной историей.

...