我已经创建了一个Silverlight用户控件。标记为:
<StackPanel Grid.Row="4" Grid.Column="0" Orientation="Horizontal" Width="Auto" Margin="5">
<Button Content="OK" Margin="0,0,5,5" MinWidth="50" Command="{Binding OKCommand}" />
</StackPanel>
后面的代码将依赖属性'OKCommand‘声明为:
public ICommand OKCommand
{
get
{
return (ICommand)GetValue(OKCommandProperty);
}
set
{
SetValue(OKCommandProperty, value);
}
}
public static readonly DependencyProperty OKCommandProperty
= DependencyProperty.Register("OKCommand", typeof(ICommand), typeof(TestUserControl), new PropertyMetadata(null, OKCommandProperty_PropertyChangedCallback));
private static void OKCommandProperty_PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
}
现在,我想在另一个页面上使用用户控件,该页面是视图& ViewModel定义了我希望OKCommand绑定到的命令。XAML标记如下:
<local:TestControl OKCommand="{Binding Path=TestControlOk}"/>
但是,当我单击该按钮时,它不会执行任何操作。任何关于我做错了什么的线索。
发布于 2010-09-24 16:26:18
您需要显示包含TestControlOk属性的视图模型,这样我们才能知道这是否是问题的一部分。
UserControls不会自动将自身注册为数据上下文,因此用户控件内的绑定将不会绑定任何内容。你有没有
this.DataContext = this;
在UserControl代码背后的任何地方,才能使您的第一个绑定真正工作?
或者,您可以这样做:
<UserControl .....
x:Name="MyUserControl">
<StackPanel Grid.Row="4" Grid.Column="0" Orientation="Horizontal" Width="Auto" Margin="5">
<Button Content="OK" Margin="0,0,5,5" MinWidth="50"
Command="{Binding OKCommand, ElementName=MyUserControl}" />
</StackPanel>
</UserControl>
注意,绑定的ElementName=
部分指向XAML中的根UserControl元素。
https://stackoverflow.com/questions/3788950
复制相似问题