2010-08-10 5 views
0

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

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

ответ

1

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

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

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

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

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

Edit:

Из комментариев, вы пытаетесь поддерживать один из двух типов данных в том же пространстве, в пользовательском интерфейсе, в зависимости от того, что находится в файле 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 Видимость свойство "{Binding TextVisibility}", и оно должно работать. Если вы установите свойство viewmodel «Visibility.Collapsed», текстовые блоки исчезнут, и ваш ViewBox должен сжиматься, чтобы соответствовать только изображению.

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

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

+0

Моя проблема в том, что я не знаю, что мне нужно искать. Я объяснил текущую функциональность и функциональность, которая мне нужна. Я думаю, что настроить ListView не то, что я ищу. Потому что структура отличается. На данный момент: ... Теперь я хочу дополнительно к этой структуре: мне нужно изменить содержание ViewBox во время выполнения. – rakete

+0

@elr: Вам нужно поддерживать оба? Как и в случае, один элемент в ViewBox может отображать только графику, а другой может отображать графику плюс две строки текста, и он поддерживает оба одновременно? Или вам просто нужна графическая + текстовая версия? –

+0

Да, мне нужно поддерживать оба. Вид (графический + 2 линии или сетка + график) зависит от текущего узла в XML-файле. Каждые 5 секунд будет загружен следующий узел. XML-файл содержит оба типа записей. – rakete