通过XAML在属性中添加类的实例

时间:2014-06-13 08:36:05

标签: c# wpf xaml

你有一个自定义类(一个Button扩展类),其中我有一个类型为Control的自定义属性。 我需要这个属性来访问另一个控件来做某事。

该属性声明如下:

private Control mainTab = null;
public Control MainTab { get { return mainTab; } set { mainTab = value; } }

但在XAML中使用时:

// "mainTab" is the x:Name of another control in this window
<CustomClass MainTab="mainTab" ....></CustomClass>

我得到“Memeber MainTab无法识别或无法访问”。为什么?

2 个答案:

答案 0 :(得分:0)

通过设置绑定的ElementName属性来绑定指定的元素:

<local:CustomClass MainTab="{Binding ElementName=mainTab}" ... />

为了实现这一目标,MainTab必须是dependency property

public static readonly DependencyProperty MainTabProperty =
    DependencyProperty.Register(
        "MainTab", typeof(Control), typeof(CustomClass));

public Control MainTab
{
    get { return (Control)GetValue(MainTabProperty); }
    set { SetValue(MainTabProperty, value); }
}

答案 1 :(得分:-1)

您已在xaml中包含自定义类的命名空间,然后您可以使用自定义类

    <Window x:Class="WpfApplication2.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfApplication2"
            Title="MainWindow" Height="350" Width="525">
 <Canvas>
        <local:CustomClass MainTab=""/>

    </Canvas>

和班级是

namespace WpfApplication2
{
    public class CustomClass
    {
        public Control MainTab { get; set; }
    }
}