关于在MVVM架构下WPF中UserControl的 visibility Binding问题。 UserControl MVVM

2025年01月06日 12:52
有3个网友回答
网友(1):

usercontrol如果不指定绑定,默认的是uc中的VM,需要指定要绑定的page的vm。

如:

这句代码表示绑定到父page的datacontext上。如果直接写,{Binding IsShowTimeUI},肯定是不起作用的。

网友(2):

应该主要是DataContext不一致吧。绑定到的属性是在主页面的vm里定义还是uc的vm里呢?

网友(3):

外面包一个层这里放用户控件

你可以用转换器,设置一个变量,多个状态,根据不同状态选择显示不同界面。

比如 变量1{A,B,C}

    public class AccountStatusToVisibility : IValueConverter
    {
        #region "IValueConverter Members"

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null)
            {
                return Visibility.Collapsed;
            }

            if (parameter != null)
            {

                var p = parameter.ToString();
                if (p.Contains(","))
                    return p.Split(',').Contains(value.ToString(), StringComparer.OrdinalIgnoreCase) ? Visibility.Visible : Visibility.Collapsed;
                return string.Equals(p, value.ToString(), StringComparison.OrdinalIgnoreCase) ? Visibility.Visible : Visibility.Collapsed;
            }

            return Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }