Форма входа в Catel

Я продолжаю свои эксперименты с Catel, и мне было интересно несколько вещей:

  • Могу ли я инвертировать кнопку «ОК/Отмена»?
  • Как я могу показать логин в виде заставки? Я искал и нашел пример с Prism, но здесь у меня нет Bootstrapper

Вот мой код

 private   void OnMenuClickExecute(Telerik.Windows.RadRoutedEventArgs e)
    {
        var typeFactory = this.GetServiceLocator();
        var dependencyResolver = this.GetDependencyResolver();
        var uiVisualizerService = dependencyResolver.Resolve<IUIVisualizerService>();

        var login = typeFactory.ResolveType<LoginViewModel>();


        IViewLocator locator = dependencyResolver.Resolve<IViewLocator>();

        uiVisualizerService.ShowDialog(login);

Вид

<catel:DataWindow x:Class="CatelDocking.Login.Views.LoginView"
               xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
               xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
               xmlns:catel="http://catel.codeplex.com"
               xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" SizeToContent="WidthAndHeight">

<catel:StackGrid>
    <catel:StackGrid.RowDefinitions>
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
        <RowDefinition Height="25" />
    </catel:StackGrid.RowDefinitions>
    <catel:StackGrid.ColumnDefinitions>
        <ColumnDefinition Width="120"/>
        <ColumnDefinition Width="120"  />
    </catel:StackGrid.ColumnDefinitions>

    <Label Content="Username"></Label>
    <Label Content="Password" Grid.Row="1"></Label>

    <TextBox Grid.Column="1" Text="{Binding Username,Mode=TwoWay}"></TextBox>
    <TextBox Grid.Column="1" Grid.Row="1" Text="{Binding Password,Mode=TwoWay}"></TextBox>
    <telerik:RadButton Grid.ColumnSpan="2" Grid.Row="2" HorizontalAlignment="Right" Content="Ok"></telerik:RadButton>
</catel:StackGrid>

Thanks


person advapi    schedule 18.05.2015    source источник


Ответы (1)


  1. Да, используйте пользовательский режим и добавьте кнопки с помощью AddCustomButton в код программной части окна.
  2. Это то, что вы можете выяснить сами как разработчик, работает одинаково для всех fx/wpf, но что-то вроде этого должно быть достаточно:

uiVisualizerService.ShowDialog<LoginViewModel>();

person Geert van Horrik    schedule 18.05.2015
comment
Geert, это решение, которое я принял до сих пор (но пока я нажимаю кнопку, чтобы показать форму входа...), в какой точке правильнее всего загрузить эту форму? - person advapi; 18.05.2015
comment
а также... есть ли способ разместить перевернутую кнопку в одном месте для всего окна? - person advapi; 18.05.2015
comment
Просто извлеките из окна данных и реализуйте свою собственную версию. Затем вы можете изменить его для всех ваших окон. - person Geert van Horrik; 18.05.2015
comment
Правильный момент загрузки чего-либо полностью зависит от приложения. Например, мы создали оболочку с заставкой в ​​Orchestra. Мы показываем лицензирование во время заставки, но другие предпочитают полностью загружать оболочку и показывать экран входа в систему. Тебе решать - person Geert van Horrik; 18.05.2015
comment
Герт, я имел в виду, предположим, что мне нужно загрузить модель представления и загрузить некоторые данные для заполнения раскрывающегося списка, где я должен загрузить эти данные в модели представления при каком событии? Инициализировать? - person advapi; 19.05.2015
comment
Да, Initialize — это метод, который следует использовать. - person Geert van Horrik; 19.05.2015
comment
Извините, Герт, есть ли способ применить перевернутое положение кнопок во всем приложении? как я видел, это WrapControlHelper, который делает свое дело .cs" rel="nofollow noreferrer">github.com/Catel/Catel/blob/, но я думаю, что не смогу легко его переопределить - person advapi; 20.05.2015
comment
Просто вопрос, Герт, когда я нахожусь в форме входа и нажимаю «ОК», при нажатии кнопки отправляется OkCommand, как я могу вызвать службу, проверить учетные данные и, если есть ошибка, не закрыть диалоговое окно? - person advapi; 21.05.2015
comment
Вы можете либо реализовать его в методе Save на виртуальной машине, либо реализовать для этого пользовательскую команду. - person Geert van Horrik; 21.05.2015