我有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