C# 通过Viewmodel和绑定访问文本框
我创建了一个C#WPF程序,其中有一个C# 通过Viewmodel和绑定访问文本框,c#,wpf,class,mvvm,textbox,C#,Wpf,Class,Mvvm,Textbox,我创建了一个C#WPF程序,其中有一个文本框。我希望此文本框使用视图模型提供事件反馈 简化示例:单击按钮时,文本框显示“…单击的按钮” 我目前在代码隐藏中有: public partial class MainWindow : Window { //..... public void FeedbackPanel(string text) { if (FeedbkPanelTextBox != null) { if (
文本框
。我希望此文本框
使用视图模型
提供事件反馈
简化示例:单击按钮时,文本框
显示“…单击的按钮”
我目前在代码隐藏中有:
public partial class MainWindow : Window
{
//.....
public void FeedbackPanel(string text)
{
if (FeedbkPanelTextBox != null)
{
if (text != null)
{
FeedbkPanelTextBox.AppendText(text + "\n");
}
else
{
FeedbkPanelTextBox.AppendText("Null\n");
}
}
else
{
return;
}
}
}
如何将此代码移到viewmodel
并在视图中使用绑定
已编辑的快速示例:
<Window x:Class="ButtonClickedFeedbackICommand.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ButtonClickedFeedbackICommand"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.DataContext>
<local:ViewModel/>
</Grid.DataContext>
<StackPanel Orientation="Horizontal">
<TextBox x:Name="tbFeedback"
Text="{Binding ClickedFeedback}"
MinWidth="50"
Background="SlateGray"
VerticalAlignment="Center"/>
<Button Content="Click"
Command="{Binding TestCommand}"
CommandParameter="{Binding ElementName=tbFeedback, Path=Text}"
VerticalAlignment="Center" />
</StackPanel>
</Grid>
}
和命令:
public class TestCommand : ICommand
{
public ViewModel _vm { get; set; }
public TestCommand(ViewModel vm)
{
_vm = vm;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_vm.FeedbackPanel(parameter.ToString());
}
}
您可以选择在该CommandParameter中发送另一个内容。在思考中,流程尊重您的需求。可以随意玩一会儿 你至少应该列出一些你尝试过的事情,这样我们就能了解你的知识水平。因为简单的答案是:“它们是课堂,你可以用它们做各种课堂上的事情。”。但是如果你给我们一份你尝试过的东西的清单,很可能会发现你不理解OO编程的哪一部分。我希望你感觉好些。但这里有一个自我学习的建议。在尝试编程WPF之前,先学习基本的面向对象编程概念。几乎所有的WPF示例或教程都假定您了解OOP的基础知识,但他们不会教您这些基础知识。同时,WPF假设您已经知道了基础知识。在WPF、WinForms或ASP.NET中,这实际上是一个非常简单的问题。答案总是一样的。关于C#编程语言有一本完整的手册。在询问有关该语言语法的基本问题之前,您应该先查看它。看见有关详细参考资料,请参阅。我们宁愿帮助您也不愿回答问题。您提出问题的事实证明您不了解一些基本知识。你说“在自己的课堂上”是什么意思?您是在谈论用户控件,但可能不知道这个术语吗?@Laket如果您使用代码隐藏,确实可以轻松处理按钮的单击事件,但在此之后,您将需要一种方法来调用位于另一个类中的反馈面板(字符串文本)。这还不是全部,你仍然需要一种方法回到你的文本框。您可以在MainWindow中定义方法,该方法将接收字符串参数并使用其名称直接调用TextBox,或者选择绑定到TextBox的Text属性的DepdencProperty,以便与更新保持同步。。总的来说,我建议您开始使用MVVM。
public class TestCommand : ICommand
{
public ViewModel _vm { get; set; }
public TestCommand(ViewModel vm)
{
_vm = vm;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_vm.FeedbackPanel(parameter.ToString());
}
}