首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Silverlight4MVVM:无法绑定ICommand

Silverlight4MVVM:无法绑定ICommand
EN

Stack Overflow用户
提问于 2010-09-25 00:12:47
回答 1查看 424关注 0票数 1

我已经创建了一个Silverlight用户控件。标记为:

代码语言:javascript
运行
复制
<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‘声明为:

代码语言:javascript
运行
复制
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标记如下:

代码语言:javascript
运行
复制
<local:TestControl OKCommand="{Binding Path=TestControlOk}"/>

但是,当我单击该按钮时,它不会执行任何操作。任何关于我做错了什么的线索。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-25 00:26:18

您需要显示包含TestControlOk属性的视图模型,这样我们才能知道这是否是问题的一部分。

UserControls不会自动将自身注册为数据上下文,因此用户控件内的绑定将不会绑定任何内容。你有没有

代码语言:javascript
运行
复制
this.DataContext = this;

在UserControl代码背后的任何地方,才能使您的第一个绑定真正工作?

或者,您可以这样做:

代码语言:javascript
运行
复制
<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元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3788950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档