CS0103:当前上下文不存在“”。WPF在ViewModel中得不到 .xaml中的textbox控件

YCMyTot 2018-04-10 10:00:43
直接贴代码吧,在 xxxView.xaml中定义了一些文本框:
<UserControl x:Class="CasingCheck.Views.ExternalCasingLoadView"
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:CasingCheck.Views"
mc:Ignorable="d"
d:DesignHeight="374" d:DesignWidth="310">
<TabControl TabStripPlacement="Left" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True" Margin="3,3,-635,-17">
<TabItem Header="设计参数" HorizontalContentAlignment="Left" VerticalContentAlignment="Top" HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid Background="#FFE5E5E5" Margin="3">
<TextBox x:Name="textBox_Hnext" HorizontalAlignment="Left" Height="23" Margin="206,123,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="185"/>
</Grid>
</TabItem>
</TabControl>
</UserControl>

在 对应的xxxViewModel中获取文本框的值:
        public void SaveData()
{
string get = textBox_Dsly.Text;
}

一直报错 在上下文中不存在名称“textBox_Dsly”
自己去网上找了下别人解决方案,代码也删了重写过,项目清理以及重新编译多次,还是解决不了。
不知道大家有没有碰到过这个问题。
...全文
833 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
YCMyTot 2018-04-10
  • 打赏
  • 举报
回复
引用 7 楼 L_ZhiWei 的回复:
[quote=引用 6 楼 u014693181 的回复:] [quote=引用 2 楼 L_ZhiWei 的回复:] 你这肯定找不到,都不是一个对象啊! 你要是想要Text 的值呢,你可以在vm里面创建一个属性,进行binding, 如果你是想得到textblock的话,你要讲view的对象传过来,在找textblock!
我是想得到textbox的值,假设我已经在 .xaml中设置了一个控件,不能直接在 VM中直接调用么? 直接 textBox_Dsly.Text 这样?[/quote] 肯定不能直接用啊,你要搞清楚,这是两个对象,不能直接得到,如果你要值,就在vm建一个属性,public string Text{get;set;} <TextBox x:Name="textBox_Dsly" HorizontalAlignment="Left" Height="23" Margin="206,123,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="185" Text={Binding Text}/> 这样你在vm中,就可以得到这个值了,直接可以用了,其实五楼说的对,你对mvvm还没有理解![/quote] 恩,谢谢各位的回答,MVVM框架我这就去看
it_liang 2018-04-10
  • 打赏
  • 举报
回复
引用 6 楼 u014693181 的回复:
[quote=引用 2 楼 L_ZhiWei 的回复:] 你这肯定找不到,都不是一个对象啊! 你要是想要Text 的值呢,你可以在vm里面创建一个属性,进行binding, 如果你是想得到textblock的话,你要讲view的对象传过来,在找textblock!
我是想得到textbox的值,假设我已经在 .xaml中设置了一个控件,不能直接在 VM中直接调用么? 直接 textBox_Dsly.Text 这样?[/quote] 肯定不能直接用啊,你要搞清楚,这是两个对象,不能直接得到,如果你要值,就在vm建一个属性,public string Text{get;set;} <TextBox x:Name="textBox_Dsly" HorizontalAlignment="Left" Height="23" Margin="206,123,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="185" Text={Binding Text}/> 这样你在vm中,就可以得到这个值了,直接可以用了,其实五楼说的对,你对mvvm还没有理解!
YCMyTot 2018-04-10
  • 打赏
  • 举报
回复
引用 2 楼 L_ZhiWei 的回复:
你这肯定找不到,都不是一个对象啊! 你要是想要Text 的值呢,你可以在vm里面创建一个属性,进行binding, 如果你是想得到textblock的话,你要讲view的对象传过来,在找textblock!
我是想得到textbox的值,假设我已经在 .xaml中设置了一个控件,不能直接在 VM中直接调用么? 直接 textBox_Dsly.Text 这样?
it_liang 2018-04-10
  • 打赏
  • 举报
回复
引用 3 楼 wddw1986 的回复:
“textBox_Dsly”这个东西在哪呢?你不会搜索一下?你给的代码明显都没有“textBox_Dsly”这个东西,除了抄代码什么都不会?
他不是已经贴出正确的代码了嘛!
cheng2005 2018-04-10
  • 打赏
  • 举报
回复
“textBox_Dsly”这个东西在哪呢?你不会搜索一下?你给的代码明显都没有“textBox_Dsly”这个东西,除了抄代码什么都不会?
  • 打赏
  • 举报
回复
VM层中怎么会有xaml中的东西,先搞清楚MVVM各个部分的作用及关系再编码吧。
it_liang 2018-04-10
  • 打赏
  • 举报
回复
你这肯定找不到,都不是一个对象啊! 你要是想要Text 的值呢,你可以在vm里面创建一个属性,进行binding, 如果你是想得到textblock的话,你要讲view的对象传过来,在找textblock!
YCMyTot 2018-04-10
  • 打赏
  • 举报
回复
代码复制错了,textbox定义应该是: <TextBox x:Name="textBox_Dsly" HorizontalAlignment="Left" Height="23" Margin="206,123,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="185"/>
YCMyTot 2018-04-10
  • 打赏
  • 举报
回复
1.在 VM中建立对象,代码如下:
      // TextBox
        private string textbox_dsly;
        public string Textbox_Dsly {
            get
            {
                return this.textbox_dsly;
            }
            set {
                textbox_dsly = value;
                NotifyOfPropertyChange(() => Textbox_Dsly);
            }
        }
2. 在.xaml中绑定,代码如下:
<TextBox x:Name="textBox_Dsly" HorizontalAlignment="Left" Height="23" Margin="206,30,0,0" TextWrapping="Wrap" Text="{Binding Textbox_Dsly}" VerticalAlignment="Top" Width="185"/>
3. 在VM中访问,代码如下:
       public void SaveData()
        {
            string get = Textbox_Dsly;
        }
刚入坑WPF,多谢各位大佬帮我解决问题。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧