Могу ли я установить свойство Content для ContentControl для объекта DrawingVisual? В документации говорится, что контент может быть чем угодно, но я пробовал, и ничего не появляется, когда я добавляю элемент управления в холст. Возможно ли, и если вы можете опубликовать полный код, который добавляет ContentControl, чей контент является DrawingVisual, на холст?WPF - ContentControl Content as DrawingVisual
2
A
ответ
4
Могу ли я установить свойство Content объекта ContentControl для объекта DrawingVisual?
Технически, да, вы можете. Однако это, вероятно, не то, что вы хотите. DrawingVisual, добавленный в ContentControl, просто отобразит строку «System.Windows.Media.DrawingVisual». Следующий код в сетке продемонстрирует это easilly:
<Button>
<DrawingVisual/>
</Button>
Чтобы использовать DrawingVisual должным образом, вам необходимо оформить его в FrameworkElement. См. Microsoft Reference.
Таким образом, следующий код должен помочь сделать то, что вы хотите.
<Window x:Class="TestDump.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestDump"
Title="Window1" Height="300" Width="600" >
<Grid>
<Canvas>
<Button >
<local:MyVisualHost Width="600" Height="300"/>
</Button>
</Canvas>
</Grid>
</Window>
А на C# стороне:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace TestDump
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
}
public class MyVisualHost : FrameworkElement
{
private VisualCollection _children;
public MyVisualHost()
{
_children = new VisualCollection(this);
_children.Add(CreateDrawingVisualRectangle());
}
// Create a DrawingVisual that contains a rectangle.
private DrawingVisual CreateDrawingVisualRectangle()
{
DrawingVisual drawingVisual = new DrawingVisual();
// Retrieve the DrawingContext in order to create new drawing content.
DrawingContext drawingContext = drawingVisual.RenderOpen();
// Create a rectangle and draw it in the DrawingContext.
Rect rect = new Rect(new System.Windows.Point(160, 100), new System.Windows.Size(320, 80));
drawingContext.DrawRectangle(System.Windows.Media.Brushes.Blue, (System.Windows.Media.Pen)null, rect);
// Persist the drawing content.
drawingContext.Close();
return drawingVisual;
}
// Provide a required override for the VisualChildrenCount property.
protected override int VisualChildrenCount
{
get { return _children.Count; }
}
// Provide a required override for the GetVisualChild method.
protected override Visual GetVisualChild(int index)
{
if (index < 0 || index >= _children.Count)
{
throw new ArgumentOutOfRangeException();
}
return _children[index];
}
}
}
Смежные вопросы
- 1. WPF ContentControl Content как ContentControl
- 2. WPF - Clipping ContentControl внутри Canvas
- 3. wpf DrawingVisual - выбор объектов
- 4. Binding ContentControl Content with Window Content
- 5. <ContentControl> Содержание</ ContentControl> против <ContentControl Content = "Content" />
- 6. WPF - Добавление ContentControl в пользовательский холст
- 7. WPF: Styling ContentControl
- 8. WPF TabControl с ContentControl
- 9. wpf как очистить область DrawingVisual
- 10. WPF ContentControl внутри другого ContentControl не отображается
- 11. WPF CustomControl содержание переключатель ContentControl
- 12. WPF - Swapping ContentControl (relinking elements ???)
- 13. Ввод ContentControl * внутри * WPF DataTemplate?
- 14. ContentControl внутри WPF TreeView
- 15. Пользовательский ContentControl в WPF
- 16. изображение DataTemplate внутри ContentControl WPF
- 17. WPF ContentControl ничего не отображает
- 18. WPF: преобразование вложенной DrawingGroup в вложенный DrawingVisual
- 19. WPF Как стирать DrawingVisual с помощью RemoveVisualChild
- 20. WPF Контроль доступа внутри ContentControl
- 21. Выравнивание ListBox ContentControl вправо - C# WPF
- 22. Как удалить/удалить ContentControl в Canvas WPF
- 23. DrawingVisual эквивалент для UWP
- 24. Можно ли нарисовать DrawingVisual?
- 25. Изменение содержимого с ButtonClick, ContentControl WPF
- 26. WPF Как я могу изменить контент ContentControl
- 27. wpf ResourceDictionary не применяется к ContentControl
- 28. WPF - Как получить контент ActualHeight ContentControl?
- 29. WPF TextWrapping различия между ListBox и ContentControl
- 30. Отображение WebView as AlertDialog content