В UWP, что эквивалентно свойству DependencyType класса DependencyProperty WPF?

Я бы рекомендовал использовать Html.RenderAction и PartialViewResults для этого; он позволит вам отображать одни и те же данные, но у каждого частичного вида все еще будет одна модель представления и устраняет необходимость в BigViewModel

. Таким образом, ваше представление содержит примерно следующее:

@Html.RenderAction("Login")
@Html.RenderAction("Register")

Где Login & amp; Register - оба действия в вашем контроллере, определенные следующим образом:

public PartialViewResult Login( )
{
    return PartialView( "Login", new LoginViewModel() );
}

public PartialViewResult Register( )
{
    return PartialView( "Register", new RegisterViewModel() );
}

Login & amp; Register будет пользовательским элементом управления, находящимся либо в текущей папке View, либо в общей папке, и хотел бы что-то вроде этого:

/Views/Shared/Login.cshtml: (или / Views / MyView /Login.cshtml)

@model LoginViewModel
@using (Html.BeginForm("Login", "Auth", FormMethod.Post))
{
    @Html.TextBoxFor(model => model.Email)
    @Html.PasswordFor(model => model.Password)
}

/Views/Shared/Register.cshtml: (или /Views/MyView/Register.cshtml)

@model ViewModel.RegisterViewModel
@using (Html.BeginForm("Login", "Auth", FormMethod.Post))
{
    @Html.TextBoxFor(model => model.Name)
    @Html.TextBoxFor(model => model.Email)
    @Html.PasswordFor(model => model.Password)
}

И там у вас есть действие одного контроллера, просмотр и просмотр файла для каждого действия с каждым полностью отличным и не зависящим друг от друга для чего-либо.

0
задан marc_s 31 March 2019 в 06:02
поделиться

1 ответ

Ниже приведен простой пример того, как вы можете использовать DependencyProperty в UWP.

XAML

<Page x:Name="loginPage"
... >

<TextBlock Text="{Binding welcomeText,ElementName=loginPage}"></TextBlock>

C #

using Windows.UI.Xaml;
...
public string welcomeText
{
     get { return (string)GetValue(welcomeTextProperty); }
     set { SetValue(welcomeTextProperty, value); }
}

// Using a DependencyProperty as the backing store for welcomeText.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty welcomeTextProperty =
        DependencyProperty.Register("welcomeText", typeof(string), typeof(LoginPage), null);

В приведенном выше примере мы связываем зависимость свойство welcomeText, которое мы определяем в коде (C #) для TextBlock.

Обратите внимание, ElementName=loginPage - это имя страницы, которое мы определяем в XAML.

Надеюсь, это поможет.


РЕДАКТИРОВАТЬ 1:

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

Для этого требования вы можете сделать что-то вроде этого:

В следующем примере у нас есть специальный преобразователь значения, который преобразует длину строки в Visibility, другими словами, вернуть Visibility ] на основе длины строки, которую он получает для преобразования, а также проверяет, относится ли предоставленный тип value к типу string.

XAML

<Page x:Name="loginPage"
 xmlns:converters="using:projectName.converters"
... >
<Page.Resources>
    <converters:LengthToVisibilityConverter x:Key="lengthToVisibilityKey"></converters:LengthToVisibilityConverter>
</Page.Resources>
...
<TextBlock x:Name="flyoutTxt" Text="{Binding welcomeText,ElementName=loginPage}"></TextBlock>
<TextBlock Text="Has some text" Visibility="{Binding Path=Text,ElementName=flyoutTxt,Converter={StaticResource lengthToVisibilityKey}}"></TextBlock>

Здесь видимость второго TextBlock основана на длине текста flyoutTxt.

C #

Пользовательский класс преобразователя для преобразования длины в видимость:

class LengthToVisibilityConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {   //checking if type of "value" is String and its length
        if(value != null && value.GetType() == typeof(string) && 
           value.ToString().Length > 0)
        {
            return Visibility.Visible;
        }
        else
        {
            return Visibility.Collapsed;
        }

    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

Обратите внимание, что никаких изменений в зависимости свойства, определенной выше, не требуется. [Тысяча сто двадцать девять]

0
ответ дан Pratyay 31 March 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: