Wpf 如何将数据从XAML传递回绑定源?

Wpf 如何将数据从XAML传递回绑定源?,wpf,xaml,data-binding,parameters,Wpf,Xaml,Data Binding,Parameters,我有一个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.openxmlforma

我有一个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。我通常绑定到数据表视图中的列,例如“name”。在某些情况下,我绑定到视图模型,而不是DataRowView。这可以在上面的第二个文本块中看到,在这里我绑定到视图模型的IsValidName属性。我的问题是,如何将信息从XAML传递回绑定源,在本例中是我的视图模型?我希望传递rowIndex、DataRowView对象、名称或类似的内容,以便视图模型上的IsValidName属性具有验证哪一行的上下文

谢谢


Notre

看起来您希望调用IsValidName属性,就像一个传递参数的方法,以验证哪一行


如果您可以控制每一行的类型,那么在那里实现IsValidName属性,完全避免StaticResource绑定

每一行都是DataRowView,因为它是数据表视图中的一行。所以,我不认为我可以在这里添加我的IsValidName属性,可以吗?我发现了一个解决方案,我在这里描述:我相信它会让一些人发抖: