1

在工作时MVVM in Silverlight 4.0。我遇到了以下问题。
见下文Xaml。请注意,在 TextBox1 中,方法UpdateText(在交互触发器下)正在工作,但TextBox2其中是DataGrid's模板的一部分,这里方法“ UpdateText”根本不起作用。谁能帮我在TextChangedEvent of上调用一个方法TextBox2?(UpdateText 只是MVVM类中使用TextBox1但不使用 TextBox2 的简单方法)

这是 xaml :

<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="MVVMEventTriggerDemo.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:viewModel="clr-namespace:MVVMEventTriggerDemo.ViewModels"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:si="clr-namespace:Expression.Samples.Interactivity;assembly=Expression.Samples.Interactivity"
Height="600" Width="700">
<UserControl.Resources>
    <viewModel:MainViewModel x:Key="MainViewmodel"/>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource MainViewmodel}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="258*" />
        <ColumnDefinition Width="262*" />
    </Grid.ColumnDefinitions>
    <TextBox x:Name="textbox1" Text="{Binding EmployeeName, Mode=TwoWay}" Width="100" Height="30" Margin="142,77,20,289" Grid.Column="1">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="TextChanged">
                <si:CallDataMethod Method="UpdateText"/>
                <si:ShowMessageBox Caption="Thank you"
                                   Message="Thanks for trying the Example"
                                   MessageBoxButton="OK"/>
                <si:SetProperty TargetName="textbox1" PropertyName="Background" Value="PaleGoldenrod"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </TextBox>
    <Button Content="Show Message" Width="100" Height="25" Margin="142,113,20,258" Grid.Column="1">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Click">
                <si:CallDataMethod Method="HandleShowMessage"/>
                <si:ShowMessageBox Caption="Thank you"
                                   Message="Thanks for trying the Example"
                                   MessageBoxButton="OK"/>
                <si:SetProperty TargetName="LayoutRoot" PropertyName="Background" Value="PaleGoldenrod"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </Button>
    <sdk:DataGrid 
        x:Name="dgDevice" 
        AutoGenerateColumns="False" 
        Margin="13,13,13,13"
        BorderThickness="1,0,1,1"
        RowBackground="White"
        VerticalScrollBarVisibility="Auto" Width="320" 
        Opacity="0.9"
        Background="White"
        GridLinesVisibility="None"
        HeadersVisibility="None"
        HorizontalScrollBarVisibility="Disabled"
        ItemsSource="{Binding ActualColors,Mode=TwoWay}">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTemplateColumn Width="320" >
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Grid Width="auto">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="30*"  />                                   
                                <ColumnDefinition Width="20*" />
                            </Grid.ColumnDefinitions>

           <TextBox x:Name="textbox2" Text="{Binding EmployeeName, Mode=TwoWay}" Width="100" Height="30" Margin="142,77,20,289" Grid.Column="1">
            <i:Interaction.Triggers>
              <i:EventTrigger EventName="TextChanged">
                <si:CallDataMethod Method="UpdateText"/>
                <si:ShowMessageBox Caption="Thank you"
                                   Message="Thanks for trying the Example"
                                   MessageBoxButton="OK"/>
                <si:SetProperty TargetName="textbox2" PropertyName="Background" Value="PaleGoldenrod"/>
                 </i:EventTrigger>
               </i:Interaction.Triggers>
            </TextBox>
       </Grid>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
            </sdk:DataGridTemplateColumn>
        </sdk:DataGrid.Columns>
    </sdk:DataGrid>
</Grid>

4

1 回答 1

0

我不确定它可以帮助你,但在 Datatemplate 绑定中会像

<TextBlock Text="{Binding Path=DataContext.BusyText, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />

我认为您可能必须绑定与上句中的文本绑定相同的事件。

于 2012-09-27T18:08:01.730 回答