我有DataDependentControl与定义的依赖项属性: TextVisibility,CalendarVisibility,ComboControlVisibility。 当我选择在组合框以外的某些值具有枚举数据类型,上述特性更新为能见度枚举值,但结合于内部控制不更新Visibility属性:绑定不更新属性
<Views:DataDependentControl x:Name="typeValue">
<StackPanel x:Name="container">
<TextBox x:Name="TextBoxControl" Visibility="{Binding ElementName=typeValue, Path=TextVisibility, Mode=OneWay}"/>
<Controls:Calendar x:Name="CalendarControl" HorizontalAlignment="Left" Visibility="{Binding ElementName=typeValue, Path=CalendarVisibility}"/>
<ComboBox x:Name="ComboBoxControl" Visibility="{Binding ElementName=typeValue, Path=ComboControlVisibility}"/>
</StackPanel>
</Views:DataDependentControl>
DataDependentControl具有数据类型属性。 根据数据类型隐藏或通过以下性质塌陷子控件: ComboControlVisibility,CalendarVisibility或TextVisibility
字段类型字段内DataDependentControl属性被定义为如下:
public static readonly DependencyProperty DataTypeProperty = DependencyProperty.Register(
DataTypePropertyName,
typeof (DataTypeEnum),
typeof (DataDependentControl),
new PropertyMetadata(ValueChangedCallback));
ValueChangedCallback函数定义如下:
private static void ValueChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var thisObject = (DataDependentControl)d;
var newValue = (DataTypeEnum) e.NewValue;
switch (newValue)
{
case DataTypeEnum.Bool:
thisObject.ComboControlVisibility = Visibility.Visible;
thisObject.CalendarVisibility = Visibility.Collapsed;
thisObject.TextVisibility = Visibility.Collapsed;
....
例TextVisibility,CalendarVisibility或ComboControlVisibility的是在这里:
public static readonly DependencyProperty TextVisibilityProperty = DependencyProperty.Register(
TextVisibilityPropertyName,
typeof (Visibility),
typeof (DataDependentControl),
null);
总而言之:
里面的<StackPanel/>
:
如果选择的数据类型是 “字符串”应该有可见的
<TextBox x:Name="TextBoxControl"/>
如果选择的数据类型是“日期时间”应该有可见
<Controls:Calendar/>
如果选择的数据类型是“布尔”应该有可见
<ComboBox/>
DataDependentControl具有在组合框定义的“数据类型”属性。 “数据类型”是数据绑定:
<Views:DataDependentControl x:Name="typeValue"
DataType="{Binding SelectedItem, ElementName=DataTypes, Converter={StaticResource DataTypeReverseConverter}}"
能否请您提供您的代码隐藏(与依赖属性)呢?谢谢。 – 2010-08-31 08:49:59
我已更新信息。谢谢。 – Dmitry 2010-08-31 09:01:53
描述中出现错误:“typeValue”不是组合框,但是定义DataType属性和子控件的普通用户控件可见性根据DataType更新 – Dmitry 2010-08-31 09:44:53