Преобразование шаблонов данных WPF с использованием x: Type в Silverlight - PullRequest
2 голосов
/ 20 августа 2009

У меня есть приложение WPF, которое использует x: type при работе с шаблонами данных. Это не работает в Silverlight из коробки, но я могу вспомнить, что я видел что-то некоторое время назад в googlegroup, где они говорили о расширениях Silverlight и как это можно использовать.

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

/ Johan

Ответы [ 3 ]

1 голос
/ 20 августа 2010

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

 <DataTemplate x:Key="WorkspaceItemTemplate">
            <Grid>
                <View:TreeView Visibility="{Binding Converter={StaticResource ViewVisibilityConverter}, ConverterParameter=TreeView}" />
                <View:GridView Visibility="{Binding Converter={StaticResource ViewVisibilityConverter}, ConverterParameter=GridView}" />
                <View:DataView Visibility="{Binding Converter={StaticResource ViewVisibilityConverter}, ConverterParameter=DataView}" />
            </Grid>
        </DataTemplate>

и создайте конвертер, который изменяет видимость в зависимости от типа

 public class ViewVisibilityConverter : IValueConverter
    {

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (((ViewModelBase)value).DisplayName.Equals((string)parameter))
                return Visibility.Visible;
            return Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }
1 голос
/ 19 июня 2012

Это было наконец исправлено в Silverlight 5. Теперь вы можете написать такую ​​вещь:

<DataTemplate DataType="loc:MyType">
    <TextBlock Text="My template" />
</DataTemplate>

Вы можете поместить это в словарь ресурсов без необходимости указывать ключ x:

Обратите внимание, что Silverlight не поддерживает атрибут x: Type, поэтому вам нужно будет указать только имя типа без расширения разметки, как упоминает Muad'Dib (хотя его предложение фактически не сработало, когда он писал еще в 2009 году - DataTemplate Silverlight даже не имел свойства DataType до декабря 2011 года).

0 голосов
/ 20 августа 2009

в серебряном свете вы выключаете x: набираете и опускаете фигурные скобки ... вот так ....

<Style TargetType="local:TemplatedControl">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:TemplatedControl">
                    <StackPanel x:Name="Panel" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
</Style>
...