WPF Custom Control - PullRequest
       4

WPF Custom Control

0 голосов
/ 10 августа 2010

У меня есть вид с некоторыми элементами управления и окно просмотра. На данный момент в окне просмотра находится сетка и графика внизу. Приложение читает XML-файл и обновляет содержимое сетки и графику для каждого узла в XML-файле.

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

1 Ответ

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

Вы объяснили, что такое ваше заявление, но не задали вопрос. Пожалуйста, сформулируйте вопрос, и я могу попытаться дать вам лучший ответ.

Мое лучшее предположение: «Как мне это сделать? Нужно ли писать собственный элемент управления?» Если это то, что вы спрашиваете, то, вероятно, нет.

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

Я не уверен, что это хороший ресурс, но XAML выглядит так, как будто он может быть хорошей отправной точкой для изучения того, как создавать шаблоны управления: http://ligao101.wordpress.com/2007/07/27/customizing-listview-in-wpf-part-i/

Просто поиск по любому из этих терминов («Шаблон данных ListView» и т. Д.), Вероятно, даст вам полезную информацию.

Изменить:

Из комментариев вы пытаетесь поддерживать один из двух типов данных в одном и том же пространстве пользовательского интерфейса в зависимости от того, что находится в вашем XML-файле:

  • Только изображение
  • Изображение плюс две строки текста

Одним из способов решения этой проблемы является создание модели представления для ваших элементов XML и привязка элементов к этим моделям представления:

public class XmlItemViewModel // Call this something more appropriate to your app
{
    public Visibility TextVisibility { get; set; }
    public string Text1 { get; set; }
    public string Text2 { get; set; }
    public Image Picture { get; set; }
}

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

Свяжите свойство XAML TextBlock Visibility с "{Binding TextVisibility}", и оно должно работать. Если вы установите свойство viewmodel «Visibility.Collapsed», текстовые блоки исчезнут, и ваш ViewBox должен сжаться, чтобы соответствовать только изображению.

Если вы сделаете это, вам не понадобится пользовательский элемент управления, просто пользовательский класс ViewModel.

Если он не выглядит правильно, вы можете обернуть изображение и текстовые блоки с помощью StackPanel или WrapPanel.

...