Programmatically Binding to a Property

Posted by M312V on Stack Overflow See other posts from Stack Overflow or by M312V
Published on 2013-10-29T21:13:46Z Indexed on 2013/10/29 21:54 UTC
Read the original article Hit count: 241

Filed under:
|
|
|

I know it's a generic title, but my question is specific. I think it will boil down to a question of practice. So, I have the following code:

public class Component : UIElement
{
    public Component()
    {
        this.InputBindings.Add(new MouseBinding(SomeCommandProperty, new MouseGesture(MouseAction.LeftClick)));
    }
}

I could easily aggregate the ViewModel that owns SomeCommandProperty into the Component class, but I'm currently waiving that option assuming there is another way.

Component is a child of ComponentCollection which is child of a Grid which DataContext is the ViewModel. ComponentCollection as the name suggests contains a collection of Components.

<Grid Name="myGrid">
    <someNamespace:ComponentCollection x:Name="componentCollection"/>
</Grid>

It's the same scenario as the XAML below, but with TextBlock. I guess I'm trying to replicate what's being done in the XAML below programatically. Again, Component's top most ancestor's DataContext is set to ViewModel.

<Grid Name="myGrid">
    <TextBlock Text="SomeText">
        <TextBlock.InputBindings>
            <MouseBinding Command="{Binding SomeCommandProperty}" MouseAction="LeftClick" />
        </TextBlock.InputBindings>
    </TextBlock>
</Grid>

Update 1

Sorry, I'm unable to comment because I lack the reputation points.

Basically, I have a custom control which inherit from a Panel which children are a collection of Component. It's not a hack, like I've mentioned, I could directly have access to SomeCommandProperty If I aggregate the ViewModel into Component. Doing so, however, feels icky. That is, having direct access to ViewModel from a Model.

I guess the question I'm asking is. Given the situation that Component's parent UIElement's DataContext is set to ViewModel, is it possible to access SomeCommandProperty without Component owning a reference to the ViewModel that owns SomeCommandProperty? Programatically, that is.

Using ItemsControl doesn't change the fact that I still need to bind SomeCommandProperty to each Items.

© Stack Overflow or respective owner

Related posts about c#

Related posts about wpf