Как я могу передать данные из моего XAML в источник привязки? - PullRequest
0 голосов
/ 22 июня 2010

У меня XAML, который выглядит примерно так:

<UserControl x:Class="MyNamespace.MyClass"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:local="clr-namespace:MyNamespace"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="500">

<UserControl.Resources>
    <local:MyViewModel x:Key="ViewModel"/>
</UserControl.Resources>

<UserControl.DataContext>
    <Binding Source="{StaticResource ViewModel}"/>
</UserControl.DataContext>

    <DataGrid Name="_myGrid" AutoGenerateColumns="False" 
   ItemsSource="{Binding Path=MyDataTable}">        
   <DataGrid.Columns>
            <DataGridTemplateColumn Header="Name">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Path=name}" />
                            <TextBlock Text="{Binding 
                                Source={StaticResource ViewModel}, Path=IsValidName}"/>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <Grid FocusManager.FocusedElement="{Binding ElementName=NameTextBox}">
                            <TextBox Name="NameTextBox" Text="{Binding Path=name}" />
                        </Grid>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            </DataGridTemplateColumn>

        </DataGrid.Columns>
    </DataGrid>

Как вы, вероятно, видите выше, моя DataGrid связывается с таблицей данных как ее ItemsSource.Я обычно привязываю столбцы в представлении таблицы данных, например, «имя».В некоторых случаях я привязываюсь к своей модели представления, а не к DataRowView.Это можно увидеть во втором текстовом блоке выше, где я связываюсь со свойством IsValidName модели представления.У меня вопрос: как я могу передать информацию из моего XAML обратно в мой источник привязки, в данном случае мою модель представления?Я хотел бы передать rowIndex, объект DataRowView, имя или что-то подобное, чтобы свойство IsValidName в модели представления имело контекст для проверки, какая строка проверяется.

Спасибо,

Notre

1 Ответ

0 голосов
/ 22 июня 2010

Похоже, что вы хотите вызывать свое свойство IsValidName как метод, передавая параметры, по которым проверяется строка.

если у вас есть контроль над типом каждой строки, реализуйте там свойство IsValidName, полностью избегая привязки StaticResource!

...