我尝试绑定一个bindig示例:
settings.xaml
<labels:KeyValueLabel Key="User name:" Label="{Binding Name}" Margin="10"/>
KeyValueLabel.xaml
<UserControl x:Class="rodzic.Controls.Labels.KeyValueLabel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
d:DesignHeight="100" d:DesignWidth="480">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="KeyLabel" Text="{Binding Key}"/>
<TextBlock x:Name="ValueLabel" Text="{Binding Label}"/>
</Grid>
KeyValueLabel.xaml.cs
public partial class KeyValueLabel : UserControl
{
public string Key { get; set; }
public static readonly DependencyProperty LabelProperty = DependencyProperty.Register(
"Label",
typeof(String),
typeof(KeyValueLabel),
new PropertyMetadata("default", new PropertyChangedCallback(LabelChanged))
);
static void LabelChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
//e is always being set to ""
}
public string Label
{
get { return (string)GetValue(LabelProperty); }
set { SetValue(LabelProperty, value); }
}
public KeyValueLabel()
{
InitializeComponent();
}
}
如果我在settings.xaml中将值作为静态文本传递,则它可以工作,但来自settings.xaml的绑定数据不适用于键或标签。
如何修复标签绑定?无论绑定是如何嵌套的,我都想让它工作。
答案 0 :(得分:1)
您似乎想要创建自定义控件,而不是UserControl。这是两件完全不同的事情。使用自定义控件,您可以创建依赖项属性,然后像任何其他控件一样直接绑定到它们。
在自定义控件中,然后捕获它的设置并直接设置TextBlock的Text属性。因此,您不需要双重绑定。