首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WPF绑定到content控件的content属性

WPF绑定到content控件的content属性
EN

Stack Overflow用户
提问于 2013-03-05 00:47:42
回答 1查看 7.8K关注 0票数 0

如何绑定到content控件的content属性?

我创建了自定义控件:

代码语言:javascript
运行
复制
      public class CustomControl 
        {
         // Dependency Properties
public int MyProperty
        {
            get { return (int)GetValue(MyPropertyProperty); }
            set { SetValue(MyPropertyProperty, value); }
        }

        // Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MyPropertyProperty =
            DependencyProperty.Register("MyProperty", typeof(int), typeof(MainViewModel), new PropertyMetadata(0));
         }

在ViewModel中,我创建了一个此自定义控件类型的属性:

代码语言:javascript
运行
复制
    public CustomControl CustomControl { get; set; }

在视图中,我将此属性绑定到content控件:

代码语言:javascript
运行
复制
     <ContentControl x:Name="Custom" Content="{Binding CustomControl}"></ContentControl>

现在,我如何绑定到content控件的content属性?

EN

回答 1

Stack Overflow用户

发布于 2013-03-05 00:52:30

代码语言:javascript
运行
复制
<ContentControl Content="{Binding ElementName=Custom, Path=Content}" />

不过,我不确定这会有什么影响。我怀疑它会抱怨UI元素已经有了父元素或类似的东西。

更新

如果我认为我正确地理解了你的问题,我不认为你可以使用绑定来做你想做的事情。这是另一种选择,它在内容更改时添加一个回调,以便您可以将新内容设置为VM的属性:

代码语言:javascript
运行
复制
class CustomControl : Control
{
    static CustomControl()
    {
        ContentControl.ContentProperty.OverrideMetadata(typeof(CustomControl), new PropertyMetadata(null, UpdateViewModel));
    }

    private static void UpdateViewModel(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var control = d as CustomControl;
        var viewModel = control.DataContext as MyViewModel;
        viewModel.CustomControl = control;
    }
}

你可能需要一些错误处理。

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

https://stackoverflow.com/questions/15206621

复制
相关文章

相似问题

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