簡體   English   中英

設置值時,WPF文本框綁定未更新

[英]WPF Textbox Binding Is Not Updating When Setting Value

我有一個小程序來測試文本框數據綁定,當我更改文本框本身中的值時它可以工作,但是當我嘗試從后面的代碼中更改值時,變量會更新,但文本框不會更新。 我環顧四周,但找不到解決方案,因為我看到的大多數內容都是用於更新變量的文本框,這與我需要的相反。 這是代碼:

XAML:

<Grid>
    <TextBox Text="{Binding FirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Height="23" Margin="127,37,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
    <TextBox Text="{Binding LastName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Height="23" Margin="127,88,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
    <TextBlock HorizontalAlignment="Left" Margin="28,40,0,0" TextWrapping="Wrap" Text="First Name" VerticalAlignment="Top"/>
    <TextBlock HorizontalAlignment="Left" Margin="28,91,0,0" TextWrapping="Wrap" Text="Last Name" VerticalAlignment="Top"/>
    <Button x:Name="Name" Content="Name!" HorizontalAlignment="Left" Margin="145,212,0,0" VerticalAlignment="Top" Width="75" Click="Name_Click"/>

</Grid>

和我的代碼:

namespace WpfApplication1
{
public class UIControls : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private string _firstName;
    private string _lastName;

    protected void Notify(string propertyName)
    {
        if(this.PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    public string FirstName
    {
        get { return _firstName; }
        set
        {
            if (value != _firstName)
            {
                _firstName = value;
                Notify("FirstName");
            }

        }
    }
    public string LastName
    {
        get { return _lastName; }
        set
        {
            if (value != _lastName)
            {
                _lastName = value;
                Notify("LastName");
            }
        }
    }
}

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        UIControls viewModel = new UIControls();
        this.DataContext = viewModel;
    }

    private void Name_Click(object sender, RoutedEventArgs e)
    {
        UIControls ui = new UIControls();
        ui.FirstName = "Mike";
        ui.LastName = "Smith";
    }
}

}

好吧,您每次單擊按鈕都將創建新的UIControl。 新的UIControls未綁定到文本框。 嘗試創建綁定到MainWindow的私有文件,如下所示:

public partial class MainWindow : Window
{

    private UIControls viewModel;
    public MainWindow()
    {
        InitializeComponent();
        viewModel = new UIControls();
        this.DataContext = viewModel;
    }

    private void Name_Click(object sender, RoutedEventArgs e)
    {
        viewModel.FirstName = "Mike";
        viewModel.LastName = "Smith";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM