代码之家  ›  专栏  ›  技术社区  ›  javacoder123

使用EnumVisibilityConverter-WPF从一个用户控件传输到另一个用户控件

  •  0
  • javacoder123  · 技术社区  · 6 年前

    当用户按下按钮时,我想显示一个新的UserControl。我已经创建了一个EnumVisibilityConverter,并希望设置枚举,以便在按下按钮时显示一个名为login的不同用户控件。到目前为止,我已经将enum属性重新分配给Login enum类型,但是如何让它显示新的UserControl

    枚举可见性转换程序

    public class EnumToVisibilityConverter : IValueConverter
        {
            /// <summary>
            /// The converter will return Visibility.Visible if the parameter argument contains a string equal to value, Visible.Collapsed otherwise.
            /// </summary>
            /// <param name="value"></param>
            /// <param name="targetType"></param>
            /// <param name="parameter"></param>
            /// <param name="culture"></param>
            /// <returns></returns>
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                // value is null, parameter is null or value is not an enum type
                if(value == null || parameter == null || !(value is Enum))
                {
                    return Visibility.Collapsed;
                }
    
                string currentState = value.ToString();
                string stateString = parameter.ToString();
                bool found = false;
    
                foreach(string state in stateString.Split(','))
                {
                    found = (currentState == state.Trim());
                    if(found)
                        break;
                }
    
                return found ? Visibility.Visible : Visibility.Collapsed;
    
    
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    

    寄存器.Xaml

    <Window.Resources>
            <vm:RegisterViewModel x:Key="RegisterViewModelObject" />
            <enum:EnumToVisibilityConverter x:Key="enumToVisibility" />
    </Window.Resources>
    
    <StackPanel Background="{StaticResource LightBlueBrush}"
                    Visibility="{Binding CurrentResponse, 
                    Converter={StaticResource enumToVisibility}, 
                    ConverterParameter='Register'}">
    
    <!-- Move To Login Page -->
            <Button Content="I Already Have An Account"
                    Margin="230 0 230 0"          
                    Style="{StaticResource ChangeLoginPage}" />
        </StackPanel>
    

    属性(枚举)

    public enum ResponseState
    {
        Login,
        Register
    }
    
    0 回复  |  直到 6 年前