首页 > 解决方案 > 一键更改文本框中的值

问题描述

通过单击 Ok 按钮,长度和宽度应该会发生变化,这有助于弄清楚如何为 Click_Ok 按钮编写函数。当我选择 View1 时,文本框会自动显示有关此 View1 的信息。如果我想通过在文本框中键入一个新值来更改值,我需要按下按钮来保存它

视图模型

class CameraViewModel : ViewModelBase
{   
    private ObservableCollection<CameraModel> camera = new ObservableCollection<CameraModel>
    {
        new CameraModel { View = "View1", Width = 100, Height = 100 }
    };

    public ObservableCollection<CameraModel> Camera
    {
        get { return camera; }
        set { camera = value; }
    }

    private CameraModel selectedCamera;    

    public CameraModel SelectedCamera
    {
        get { return selectedCamera; }
        set
        {
            selectedCamera = value;
            OnPropertyChanged("SelectedCamera");
        }
    }

    public CameraViewModel()
    {         
        ClickOk = new BaseCommand(() => Click_Ok());
    }

    public ICommand ClickOk { get; set; }      

    private void Click_Ok()
    {

    }
}

看法

<TextBox x:Name="txtWidth" Width="150" Height="30" Text="{Binding SelectedCamera.Width, Mode=TwoWay, UpdateSourceTrigger=Explicit}"/>
<TextBox x:Name="txtHeight" Width="150" Height="30" Text="{Binding SelectedCamera.Height, Mode=TwoWay, UpdateSourceTrigger=Explicit}"/>

<Button Grid.Column="0" Content="Ok" Margin="10 10 10 10" Height="30" Width="75" Command="{Binding ClickOk}"/>

模型

class CameraModel
    {
        public string View { get; set; }        
        public int Width { get; set; } 
        public int Height { get; set; }
    }

标签: c#wpfmvvm

解决方案


private int _width;
        public int Width
        {
            get { return _width; }
            set
            {
                _width = value;
                OnPropertyChanged("SelectedCamera");                
            }
        }

        private int _height;
        public int Height
        {
            get { return _height; }
            set
            {
                _height = value;
                OnPropertyChanged("SelectedCamera");
            }
        }

<TextBox x:Name="txtWidth" Width="150" Height="30" Text="{Binding SelectedCamera.Width, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<TextBox x:Name="txtHeight" Width="150" Height="30" Text="{Binding SelectedCamera.Height, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

推荐阅读