WPF - 如何通过MVVM绑定控件

时间:2013-01-16 09:14:22

标签: wpf mvvm binding

我有看法:

<Grid>
    <!--Some Stuff-->
    <Control XXX="{Binding ButtomControl}"/>
    <!--Some Stuff-->
</Grid>

我有VM:

public sealed class SelectionDialogV3VM : PropertyChanges
{
    // Some Stuff
    public Control ButtomControl
    {
        get{return _buttomControl;}
        set
        {
            _buttomControl = value;
            OnPropertyChanged("ButtomControl");
        }
    }
    // Some Stuff
}

我的目标:在运行时更改我的主视图中的一些视图(ButtomControl)。 但是,我不能做正确的绑定,因为我不知道XXX属性。

感谢

4 个答案:

答案 0 :(得分:3)

我只想添加其他内容:

应该不惜一切代价避免在视图模型中引用UI控件。

如果要通过视图模型切换视图,请尝试使用DataTemplates和ContentControl。

请参阅:

http://rachel53461.wordpress.com/2011/05/28/switching-between-viewsusercontrols-using-mvvm/

答案 1 :(得分:2)

尝试这样的事情:

<ContentControl Content="{Binding ButtomControl}"/>

但老实说,在Control类型的ViewModel中拥有一个属性并不是一个好兆头:D

答案 2 :(得分:1)

使用ContentPresenter:

<ContentPresenter Content="{Binding ButtomControl}"/>

无论如何,绑定到一个控件很奇怪!

答案 3 :(得分:0)

谢谢大家,所有答案都很有价值

最后,我使用了DataTriggers,如下所述: MVVM : how to switch between views using DataTemplate + Triggers

由于