C# XAML-在自定义UserControl中定义附加属性
我有一个自定义UserControl,我想将自定义属性附加到一些包含的UI元素 我试图这样实现它,但VS不接受我的XAML代码。 它说MyProp不可用,或者无法访问C# XAML-在自定义UserControl中定义附加属性,c#,wpf,xaml,dependency-properties,attached-properties,C#,Wpf,Xaml,Dependency Properties,Attached Properties,我有一个自定义UserControl,我想将自定义属性附加到一些包含的UI元素 我试图这样实现它,但VS不接受我的XAML代码。 它说MyProp不可用,或者无法访问 <UserControl x:Class="mynamespace.MyDataSourceSelector" xmlns:local="clr-namespace:mynamespace" ... > <TabControl> <TabItem
<UserControl
x:Class="mynamespace.MyDataSourceSelector"
xmlns:local="clr-namespace:mynamespace"
... >
<TabControl>
<TabItem Header="Tab1" local:MyDataSourceSelector.MyProp="something1"/>
<TabItem Header="Tab2" local:MyDataSourceSelector.MyProp="something2"/>
</TabControl>
<UserControl>
我想为每个选项卡绑定一个值,然后在需要时读取活动选项卡的MyProp值
我该怎么做呢?你把一些事情搞砸了。在您的情况下,应该声明扩展属性,如
public static class TabItemExtensions
{
public static void SetMyProp(TabItem element, string value)
{
element.SetValue(MyPropProperty, value);
}
public static string GetMyProp(TabItem element)
{
return (string)element.GetValue(MyPropProperty);
}
public static readonly DependencyProperty MyPropProperty
= DependencyProperty.RegisterAttached(
"MyProp",
typeof(string),
typeof(TabItemExtensions),
new PropertyMetadata(null)
);
}
像这样使用它
<TabItem Header="Tab1" local:TabItemExtensions.MyProp="something1"/>
你把一些事情搞砸了。在您的情况下,应该声明扩展属性,如
public static class TabItemExtensions
{
public static void SetMyProp(TabItem element, string value)
{
element.SetValue(MyPropProperty, value);
}
public static string GetMyProp(TabItem element)
{
return (string)element.GetValue(MyPropProperty);
}
public static readonly DependencyProperty MyPropProperty
= DependencyProperty.RegisterAttached(
"MyProp",
typeof(string),
typeof(TabItemExtensions),
new PropertyMetadata(null)
);
}
像这样使用它
<TabItem Header="Tab1" local:TabItemExtensions.MyProp="something1"/>
这不是附加的属性声明。看看它实际上应该是什么样子。除此之外,您可能只需要简单地使用TabItem的Tag属性就可以了。现在我意识到,这个和我写的东西是不能互换的:)谢谢您的帮助!这不是附加的属性声明。看看它实际上应该是什么样子。除此之外,您可能只需要简单地使用TabItem的Tag属性就可以了。现在我意识到,这个和我写的东西是不能互换的:)谢谢您的帮助!