Nano Hash - криптовалюты, майнинг, программирование

Составной wpf (Prism) с использованием пользовательских элементов управления в модулях

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

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

    public class SpecialCanvas : Canvas

Холст является частью библиотеки классов под названием MainDiagram Module, и эта библиотека содержит класс, который реализует IModule.

    public class MainDiagramModule : IModule
{
    private readonly IRegionManager regionManager;

    public MainDiagramModule(IRegionManager regionManager)
    {
        this.regionManager = regionManager;
    }

    public void Initialize()
    {
        ResourceDictionary dictionary = new ResourceDictionary();
        dictionary.Source = new Uri("pack://application:,,,/MainDiagramModule;Component/Resources.xaml");
        Application.Current.Resources.MergedDictionaries.Add(dictionary);

        regionManager.RegisterViewWithRegion("MainRegion", typeof(SpecialCanvas));
    }
}

Мой класс Shell.xaml содержит ItemsControl, предоставляющий область для добавления холста.

<Window x:Class="MLinkPrismVersion.Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Prism="http://www.codeplex.com/prism"
    Title="MachineLink" Height="700" Width="1000">
<Grid>
    <ItemsControl Name="MainDiagram" Height="500" Width="800" Prism:RegionManager.RegionName="MainRegion"/>
</Grid>

My problem is that whenever MeasureOverride() is called on my SpecialCanvas class, the Size passed as a parameter gets the width from the parent, in this case 800, but the height is always infinity. Is there any way to sort this. The project was previously written in a non mvvm/prism way where I simply instantiated specialcanvas in the Mainwindow_Loaded event and added it into a grid in mainwindow.xaml, the measureoverride method was always passed both sizes of the parent.

26.08.2013

  • Решил это, изменил ItemsControl в shell.xaml на ContentControl. 26.08.2013
  • Поместите это в раздел ответов. Затем установите его как принятый ответ. 26.08.2013

Ответы:


1

Нашел ответ на этот вопрос. Казалось бы, при изменении ItemsControl в shell.xaml на ContentControl высота и ширина передаются в MeasureOverride().

27.08.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

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

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..