我为项目创建了自定义图像按钮。这基于https://code.msdn.microsoft.com/windowsapps/Custom-Image-Button-in-4b300b62提供的代码。
我调整了图像按钮以满足我的需求,它在设计师中看起来很好。但是,我正在尝试使用DependencyProperty将文本块绑定到视图模型。
按钮的内容看起来像这样
<StackPanel x:Name="Panel" Orientation="Horizontal" VerticalAlignment="Center">
<Image Margin="10,0,-10,0" x:Name="Image" Width="48" Height="48" Source="/Assets/Images/mappin.png"/>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Width="400" x:Name="txtHeading" Text="Mooo" Grid.Row="0" TextAlignment="Center" Margin="20,0,-10,0" FontFamily="/TfL.CongestionCharge.WindowsPhone;component/Assets/Fonts/NJFont-Book.ttf#NJFont Book" />
</Grid>
</StackPanel>
</StackPanel>
没有什么了不起的,但是做了我需要的。
TextBlock依赖项背后的代码如下所示
public static readonly DependencyProperty TextDependencyProperty = DependencyProperty.Register(
"Text",
typeof(string),
typeof(UserControl),
new PropertyMetadata(null));
public string Text
{
get
{
return GetValue(TextDependencyProperty) as string;
}
set
{
SetValue(TextDependencyProperty, txtHeading.GetType().GetProperty("System.String").GetValue(txtHeading, null));
}
}
(我原来无法从System.Windows.Bindable转换为System.String错误,此代码将编译但在setter中提供null ref。异常)
我是否以正确的方式进行此操作,如果我尝试绑定到ICommand,我是否需要创建DependencyProperty,或者我可以使用
private ICommand command;
public ICommand Command
{
get
{
return command;
}
set
{
command = value;
command.Execute(value);
}
}
答案 0 :(得分:0)
将您的二传手更改为&#34;正常&#34;一,而是:
SetValue(TextDependencyProperty, txtHeading.GetType().GetProperty("System.String").GetValue(txtHeading, null));
使用此:
SetValue(TextDependencyProperty, value);
为您的UserControl
命名:
<UserControl ... x:Name="thisControl">
在TextBlock
中使用绑定到您的控件属性:
Text="{Binding Text, ElementName=thisControl}"
希望这有帮助。