WPF MVVM中的文本框值绑定

问题描述 投票:0回答:1

我有qamxswpoi代码的示例XAML:

XAML

TextBox

View Model:

<TextBox HorizontalAlignment="Stretch"  VerticalAlignment="Center" 
         Text="{Binding Path=Remarks, UpdateSourceTrigger=PropertyChanged}"
         BorderThickness="0.5" Margin="0" Height="50" Background="Transparent" Foreground="White"  />

<Button CommandParameter="{Binding ListExecActionId}" 
        Command="{Binding Source={StaticResource Locator}, Path=TaskPerformanceModel.ActivityAction_comment}"
        Content="Save"  HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3,0,0,0" Height="Auto" />

ActivityAction_coment如下

public string Remarks
{
    get { return _remarks; }
    set
    {               
        if (!string.Equals(_remarks, value))
        {
            _remarks = value;
            RaisePropertyChanged("Remarks"); 
        }
    }
}

public RelayCommand<object> ActivityAction_comment
{
    get
    {
        if (_ActivityAction_comment == null)
        {
            _ActivityAction_comment = new RelayCommand<object>((ExecActionId) => ActivityComment(ExecActionId));
        }
        return _ActivityAction_comment;
    }
}

我无法在视图模型中获取文本框(备注)值。总是得到private void ActivityComment(object _id) { try { using (DataContext objDataContext = new DataContext(DBConnection.ConnectionString)) { ListExecutionAction tblListExec = objDataContext.ListExecutionActions.Single(p => p.Id == Convert.ToInt32(_id)); **tblListExec.Remarks = Remarks; // Not getting Remarks value from Textbox** objDataContext.SubmitChanges(); } } catch (Exception Ex) { MessageBox.Show(Ex.Message, "TaskExecution:ActivityComment"); } } 。请任何人帮助我。

为了更清楚,我正在更新视图:

""
c# wpf xaml mvvm
1个回答
1
投票

绑定到视图模型的<ListView.View> <GridViewColumn > <GridViewColumn.CellTemplate> <DataTemplate> <StackPanel> <TextBlock Text="{Binding ActionDescription}" Foreground="White" FontSize="16"></TextBlock> <ToggleButton Name="button"> <ToggleButton.Template> <ControlTemplate TargetType="ToggleButton"> <TextBlock>Remarks!!</TextBlock> </ControlTemplate> </ToggleButton.Template> </ToggleButton> <Popup IsOpen="{Binding IsChecked, ElementName=button}" StaysOpen="False" Width="250" Height="100"> <StackPanel> <TextBlock Background="LightBlue" Text="{Binding ActionDescription}"></TextBlock> <TextBlock Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center" Text="Comments:" Foreground="White" Background="Transparent" /> <TextBox HorizontalAlignment="Stretch" VerticalAlignment="Center" Text="{Binding Path=Remarks, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0.5" Margin="0" Height="50"/> <!--Text="{Binding Remarks, Mode=OneWayToSource}" Text="{Binding Path=Remarks, UpdateSourceTrigger=PropertyChanged}" DataContext="{Binding CollectionOfListQueue}" Background="Transparent" Foreground="White"--> <Button CommandParameter="{Binding ListExecActionId}" Command="{Binding Source={StaticResource Locator}, Path=TaskPerformanceModel.ActivityAction_comment}" Content="Save" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3,0,0,0" Height="Auto" /> <Button Content="Cancel" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="2,0,0,0" Height="Auto" /> <!--</Grid>--> </StackPanel> </Popup> </StackPanel> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> ActivityAction_comment属性:

Remarks

备注绑定需要相同

<Button CommandParameter="{Binding ListExecActionId}"
        Command="{Binding DataContext.ActivityAction_comment, RelativeSource={RelativeSource AncestorType=ListView}}" 
        Content="Save" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="3,0,0,0"  Height="Auto" />

然后,您应该能够使用<TextBox Text="{Binding DataContext.Remarks, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType=ListView}}" ... /> source属性获取TextBox中的值:

Remarks
© www.soinside.com 2019 - 2024. All rights reserved.