1

我创建了自定义控件,其中包含用于显示颜色的组合框和一个依赖属性SelectedIndex。我在页面中使用了这个控件,mainwimdow.xaml并尝试通过在 mainwimdow.xaml.cs页面中声明的依赖属性设置选定的索引值。

但是当我通过依赖属性设置任何值时它不起作用,如果我直接在mainwimdow.xaml页面中设置自定义控件属性它工作正常。所以这意味着自定义控件工作正常,只有值不是通过依赖属性设置的。

这是代码。

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public static readonly DependencyProperty ConditionsSelectedIndexProperty = 
        DependencyProperty.Register(
           "ConditionsSelectedIndex", 
           typeof(int), 
           typeof(MainWindow), 
           new UIPropertyMetadata(3));

    public int ConditionsSelectedIndex
    {
        get { return (int)GetValue(ConditionsSelectedIndexProperty); }
        set { SetValue(ConditionsSelectedIndexProperty, value); }
    }

    public MainWindow()
    {
        InitializeComponent();
        SetCurrentValue(ConditionsSelectedIndexProperty, 5);
    }
}

MainWindow.xaml

<controls:ColorComboBoxControl x:Name="cmbConditions" 
          SelectedIndex="{Binding ConditionsSelectedIndex}" 
          Grid.Row="0" Grid.Column="0" />

如果我分配硬编码值,则以下代码可以正常工作

<controls:ColorComboBoxControl x:Name="cmbConditions" 
         SelectedIndex="5" Grid.Row="0" Grid.Column="0" />

如果我尝试这个来检查依赖属性是否工作,那么它的工作

<TextBlock Text="{Binding Path=ConditionsSelectedIndex}"
           Grid.Column="1" Height="25" Margin="42,143,77,143" >
</TextBlock>

因此,如果独立测试,自定义控件和依赖属性都可以正常工作。但是当尝试通过另一个依赖属性设置自定义控件属性时它不起作用。

4

0 回答 0