2010-06-21 3 views
0

Я XAML, который выглядит немного как это:Как передать данные из моего 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. Это можно увидеть во втором TextBlock выше, где я привязываюсь к свойству IsValidName модели представления. Мой вопрос: как я могу передавать информацию из моего XAML обратно в источник привязки, в этом случае моя модель просмотра? Я хотел бы передать объект rowIndex, DataRowView, имя или что-то подобное, так что свойство IsValidName в модели представления будет иметь контекст относительно того, какая строка проверяется.

Спасибо,

Notre

+0

Я нашел хак раствора, который я описываю здесь: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cd8d0c9f-09a7-4c50-bd7c-2bc1ae7356ce Я уверен, что это заставит некоторых людей содрогнуться :) – Notre

ответ

0

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

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

+0

Каждая строка является DataRowView, так как она представляет собой строку в представлении таблицы данных. Итак, я не думаю, что могу добавить свое свойство IsValidName (могу ли я?) – Notre

Смежные вопросы