Разрешение интерфейса как UIElement (Unity, PRISM, C #) - PullRequest
2 голосов
/ 08 октября 2009

при использовании PRISM обычным способом соединения вещей с единицей является определение интерфейса и регистрация реализации с этим интерфейсом. Теперь у меня проблема с мнением. Сценарий прост:

Предположим, пользовательский элемент управления видео, который позволяет установить команду воспроизведения. Этот элемент управления определяется простым интерфейсом «IPlayControlView». Очевидная проблема, когда я разрешаю этот элемент управления и пытаюсь добавить его к StackPanel, он не работает, потому что у меня есть IPlayControl, а не UIElement.

Я могу привести его к UIElement, потому что я знаю, что это UIElement. Но есть ли лучший способ, что-то вроде

public interface IPlayControlView : UIElement

Это не работает, но, может быть, какая-то другая вещь поможет ...

Это своего рода общий вопрос: если я разрешу представления с использованием интерфейсов, я буду сталкиваться с этой проблемой каждый раз. Возможно, это не так, как это делается, но я всегда думал, что один из .... Хорошо, только что получил идею. Я просто расширю IPlayControl одним свойством UIElement и установлю его как ссылку на себя. Итак, неважно, на вопрос отвечали при наборе: -)

Если есть лучший способ, я всегда люблю изучать новые вещи. Возможно, IUIElement?

Chris

1 Ответ

6 голосов
/ 08 октября 2009

То, как вы описываете свой предпоследний абзац, - это то, как я это делаю. Например, если я хочу использовать мой IShell как UIElement (что вполне нормально), я объявляю интерфейс примерно так:

public interface IShell
{
    UIElement GetView();
}

Тогда в моей реализации:

public partial class MyMainShell : UserControl, IShell
{
    public UIElement GetView()
    {
        return this;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...