Как привязка в xaml? - PullRequest
       31

Как привязка в xaml?

0 голосов
/ 24 мая 2011

сейчас я так делаю Binding: field:

private readonly RestaurantContext m_context = new RestaurantContext();

init:

m_context.Load(m_context.GetGroupQuery());
this.dataGridGroup.DataContext = m_context.Groups;

Как это сделать в xaml?

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Juste предоставляет ваш m_context, убедитесь, что класс, который инкапсулирует это свойство, установлен как текстовый текст вашего представления, и привяжите ваш dataGridGroup текстовый текст к вашему свойству.

Например:

public partial class Window1
{
    public Window1()
    {
        InitializeComponent();
        DataContext = new WindowViewModel();//this will set the  WindowViewModel object below as  the datacontext of the window
    }
}

public class WindowViewModel : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public void InvokePropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, e);
    }

    public WindowViewModel()
    {
        restContext = new RestaurantContext();//init 1
        restContext.Load(restContext.GetGroupQuery());//init 2
        InvokePropertyChanged(new PropertyChangedEventArgs("RestContext"));//notify the view th update datacontext
    }

    private RestaurantContext restContext;
    /// <summary>
    /// Gets or sets the RestContext (which will be vound to the datagrid datacontext)
    /// </summary>
    public RestaurantContext RestContext
    {
        get { return restContext; }
        set
        {
            if (RestContext != value)
            {
                restContext = value;
                InvokePropertyChanged(new PropertyChangedEventArgs("RestContext"));
            }
        }
    }


}

/// <summary>
/// Whatever class
/// </summary>
public class RestaurantContext
{
    public void Load(object getGroupQuery)
    {
        //Whatever here 
    }

    public object GetGroupQuery()
    {
        //Whatever here 
        return new object();
    }

    IEnumerable Groups { get; set; } 
}

XAML:

 <Window x:Class="StackOverflow.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Width="100" Height="100" >
   <Grid>
      <DataGrid DataContex="{Binding RestContext.Groups}"></DataGrid>
   </Grid>
</Window>
0 голосов
/ 24 мая 2011

В вашем XAML:

<DataGrid x:Name="dataGridGroup" DataContext={Binding Groups} />

Он автоматически свяжется с Groups свойством ViewModel

...