C# 将用户控件可见性绑定到valueconverter
我有一个ValueConverter,可以很好地处理元素,例如STACKPANEL。方法User.OwnsRight(Int32)返回true或falseC# 将用户控件可见性绑定到valueconverter,c#,c#-4.0,wpf-controls,C#,C# 4.0,Wpf Controls,我有一个ValueConverter,可以很好地处理元素,例如STACKPANEL。方法User.OwnsRight(Int32)返回true或false [ValueConversion(typeof(object), typeof(System.Windows.Visibility))] public class ConverterUserRightVisibility : IValueConverter { public object Convert(object value, T
[ValueConversion(typeof(object), typeof(System.Windows.Visibility))]
public class ConverterUserRightVisibility : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bxSuite.Base.Objects.User locUser = (bxSuite.Base.Objects.User)value;
if (parameter == null) return System.Windows.Visibility.Visible;
if (locUser == null) return System.Windows.Visibility.Visible;
if (locUser.OwnsRight(System.Convert.ToInt32(parameter)))
{
return System.Windows.Visibility.Visible;
}
else
{
return System.Windows.Visibility.Collapsed;
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
System.Windows.Visibility locVisibility = (System.Windows.Visibility)value;
if (locVisibility == System.Windows.Visibility.Hidden || locVisibility == System.Windows.Visibility.Collapsed)
{
return false;
}
else
{
return true;
}
}
}
因此,这个XAML非常有效:
<StackPanel Visibility="{Binding Path=User, Converter={StaticResource ConverterUserRightVisibility}, ConverterParameter=4}"></StackPanel>
但是如果我将我的一个用户控件的可见性绑定到这个转换器,转换器甚至不会被触发。UserControl本身工作正常
<my:MenuButtonLarge Visibility="{Binding Path=User, Converter={StaticResource ConverterUserRightVisibility}, ConverterParameter=4}"/>
你知道为什么吗?感谢您的帮助!非常感谢
编辑:我尝试了另一个转换器,只是在标签控件上设置文本。工作正常,但是如果我在usercontrol的Textproperty(dependency属性)上使用它,那么使用ConverterParameter的转换器不会被触发吗?我遗漏了什么?即使您更改了
User
的值?如何设置数据上下文?不,对不起。用户的更改
对StackPanel有效,对用户控制没有影响。另外,Binding.Mode
不会改变任何东西。DataContext=“{Binding RelativeSource={RelativeSource Self}}”
在使用UserControl的窗口中