title: How can control in the view get specific data from view model?
body: <p>I have multiple of views (user controls), each with its own <code>ViewModel</code>. To navigate between them I am using buttons. Buttons display image and text from corresponding view model and also need column and row (because there are like 10 views: 10 columns with different number of rows each).</p>
  
  <p>Right now buttons are created <em>dynamically</em> (I made a <code>Navigator</code> control for this) and for view models I have base class to hold text, image, column and row. Number of views available will be different (depends on user level and certain settings), that's why it's I need control here.</p>
  
  <p>Question: <strong>how shall my control get data from view models?</strong></p>
  
  <p>Right now I have interface <code>INavigator</code>, defined in (lol) control itself. And view models implement it. I could go opposite, let my control <em>to know</em> about view models. Both looks wrong.</p>
  
  <hr>
  
  <p>There is a single <code>Navigator</code> control what has, lets say, <code>Items</code> bound to a list of view models. It can cast each view model to <code>INavigator</code> or <code>ViewModelBase</code> (common for all pages) to obtain specific view model image, text, column and row. So either view model knows about control (to implement <code>INavigator</code>) or  control knows about <code>ViewModelBase</code>.. And this is a problem, both solution bind tight control and view models, which is bad in <code>mvvm</code>.</p>
  
  <hr>
  
  <p>Schematically
  <img src="https://i.stack.imgur.com/TRenq.png" alt="enter image description here"></p>